将双精度值从字符串添加到数组列表

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)
}

如果你的 listList:

for(int i=0;i<list.size();i++){
    double val = Double.parseDouble(list.get(i));
    sequence[i]=val;
}

如果您的 listArray,则更改为:

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;
}