将双精度值从字符串添加到数组列表
Adding double values to array list from strings
我正在尝试将字符串数组转换为双精度数组。
我对 ArrayList<>() 相当熟悉,但我看到示例代码中有 double[]。
示例:列表 = [“1”、“2”、“3”]
所需 return: 数字 = [1 , 2 , 3]
public double[] ConversionNumber
{
double[] sequence = new double[list.size()];
for(String element:list){
double val = Double.parseDouble(element);
sequence.add(val)}
return sequence;
当我这样做时,我在 Bluej 编译器中收到一个错误:“找不到符号方法 add(double)。
解决这个问题的好方法是什么(我是 Java 的初学者)。
谢谢!
如果 list
是数组,则 list.size()
将失败。我想我们可以假设它应该是 List<String>
。你通过索引访问一个数组。另外,我认为它应该是你的方法的一个参数。接下来,Java 方法名称的约定是驼峰式。
public double[] conversionNumber(List<String> list) {
double[] sequence = new double[list.size()];
int pos = 0;
for (String element : list) {
double val = Double.parseDouble(element);
sequence[pos++] = val; // <-- post-increment
}
return sequence;
}
错误发生是因为数组没有 'add' 方法。你会想做这样的事情:
double[] sequence = new double[list.length];
for(int i = 0; i < list.length; i++){
sequence[i] = Double.parseDouble(list[i]);
}
如果 list
是一个实际的 List
而不是我假设的 String[]
,你会这样做:
double[] sequence = new double[list.size()];
for(int i = 0; i < list.size(); i++){
sequence[i] = Double.parseDouble(list.get(i));
}
在此处更改您的代码
for(String element:list){
double val = Double.parseDouble(element);
sequence.add(val)
}
如果你的 list
是 List
:
for(int i=0;i<list.size();i++){
double val = Double.parseDouble(list.get(i));
sequence[i]=val;
}
如果您的 list
是 Array
,则更改为:
for(int i=0;i<list.length;i++){
double val = Double.parseDouble(list[i]);
sequence[i]=val;
}
以下代码适用于您的情况:
java.util.List<String> list = java.util.Arrays.asList("1", "2", "3");
public double[] ConversionNumber() {
double[] sequence = new double[list.size()];
int i = 0;
for(String element:list){
double val = Double.parseDouble(element);
sequence[++i] = val;
}
return sequence;
}
一般来说,如果您使用的是集合,那么您就是在整个过程中使用集合。一方面使用列表,另一方面使用数组是一种不好的形式。所以建议使用 List<Double>
而不是 double[]
public List<Double> parseDoubles(List<String> strings) {
List<Double> doubles = new ArrayList<>(strings.size());
for(String string : strings) {
doubles.add(new Double(string));
}
return doubles;
}
我正在尝试将字符串数组转换为双精度数组。 我对 ArrayList<>() 相当熟悉,但我看到示例代码中有 double[]。
示例:列表 = [“1”、“2”、“3”] 所需 return: 数字 = [1 , 2 , 3]
public double[] ConversionNumber
{
double[] sequence = new double[list.size()];
for(String element:list){
double val = Double.parseDouble(element);
sequence.add(val)}
return sequence;
当我这样做时,我在 Bluej 编译器中收到一个错误:“找不到符号方法 add(double)。
解决这个问题的好方法是什么(我是 Java 的初学者)。
谢谢!
如果 list
是数组,则 list.size()
将失败。我想我们可以假设它应该是 List<String>
。你通过索引访问一个数组。另外,我认为它应该是你的方法的一个参数。接下来,Java 方法名称的约定是驼峰式。
public double[] conversionNumber(List<String> list) {
double[] sequence = new double[list.size()];
int pos = 0;
for (String element : list) {
double val = Double.parseDouble(element);
sequence[pos++] = val; // <-- post-increment
}
return sequence;
}
错误发生是因为数组没有 'add' 方法。你会想做这样的事情:
double[] sequence = new double[list.length];
for(int i = 0; i < list.length; i++){
sequence[i] = Double.parseDouble(list[i]);
}
如果 list
是一个实际的 List
而不是我假设的 String[]
,你会这样做:
double[] sequence = new double[list.size()];
for(int i = 0; i < list.size(); i++){
sequence[i] = Double.parseDouble(list.get(i));
}
在此处更改您的代码
for(String element:list){
double val = Double.parseDouble(element);
sequence.add(val)
}
如果你的 list
是 List
:
for(int i=0;i<list.size();i++){
double val = Double.parseDouble(list.get(i));
sequence[i]=val;
}
如果您的 list
是 Array
,则更改为:
for(int i=0;i<list.length;i++){
double val = Double.parseDouble(list[i]);
sequence[i]=val;
}
以下代码适用于您的情况:
java.util.List<String> list = java.util.Arrays.asList("1", "2", "3");
public double[] ConversionNumber() {
double[] sequence = new double[list.size()];
int i = 0;
for(String element:list){
double val = Double.parseDouble(element);
sequence[++i] = val;
}
return sequence;
}
一般来说,如果您使用的是集合,那么您就是在整个过程中使用集合。一方面使用列表,另一方面使用数组是一种不好的形式。所以建议使用 List<Double>
而不是 double[]
public List<Double> parseDoubles(List<String> strings) {
List<Double> doubles = new ArrayList<>(strings.size());
for(String string : strings) {
doubles.add(new Double(string));
}
return doubles;
}