将String ArrayList转换为Double ArrayList

时间:2016-03-09 06:52:35

标签: java string arraylist double

我正在尝试将String ArrayList转换为Double ArrayList,但出于某种原因,它没有正确转换。

我的意见:

1 2 3 4

我的输出:

[1.0]
[1.0, 1.0, 2.0]
[1.0, 1.0, 2.0, 1.0, 2.0, 3.0]
[1.0, 1.0, 2.0, 1.0, 2.0, 3.0, 1.0, 2.0, 3.0, 4.0]

预期产出:

[1.0] [1.0, 2.0] [1.0, 2.0, 3.0] [1.0, 2.0, 3.0, 4.0]

我的代码

String inputValue;


List<String> input = new ArrayList<String>();
List<Double> numbers = new ArrayList<Double>();



while((inputValue = stdin.readLine()) != null) {

   input.add(inputValue);

    for(int i = 0; i < input.size(); i++) {
        numbers.add (Double.parseDouble(input.get(i)));
    }
    System.out.println(numbers);
}

1 个答案:

答案 0 :(得分:4)

您不需要两个循环 - 当您从String读取输入时,可以将double转换为stdin。除此之外,一旦所有数字都在列表中,输出应该在循环完成后打印:

    while((inputValue = stdin.readLine()) != null){
       input.add(inputValue);
       numbers.add (Double.parseDouble(inputValue));
    } 
    System.out.println(numbers);

实际上,我不确定你是否需要input列表。

编辑:

如果要将输入添加到列表中进行打印,并处理错误输入,并允许用户通过键入enter(即空行)退出循环:

    while((inputValue = stdin.readLine()) != null && !inputValue.isEmpty()) {
       input.add(inputValue);
       try {
           numbers.add (Double.parseDouble(inputValue));
           System.out.println(numbers);
       }
       catch (NumberFormatException numEx) {
           System.out.println(inputValue + " is not a double");
       }
    }