Java 将字符串ArrayList转换为双ArrayList

Java 将字符串ArrayList转换为双ArrayList,java,string,arraylist,double,Java,String,Arraylist,Double,我正在尝试将我的字符串数组列表转换为双精度数组列表,但由于某些原因,转换不正确 我的意见: 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;

我正在尝试将我的
字符串
数组列表
转换为
双精度
数组列表
,但由于某些原因,转换不正确

我的意见:

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);
}
字符串输入值;
列表输入=新的ArrayList();
列表编号=新的ArrayList();
而((inputValue=stdin.readLine())!=null){
input.add(inputValue);
对于(int i=0;i
您不需要两个循环-当您从
stdin
读取输入时,可以将
字符串
转换为
double
。除此之外,一旦所有数字都在列表中,则应在循环完成后打印输出:

    while((inputValue = stdin.readLine()) != null){
       input.add(inputValue);
       numbers.add (Double.parseDouble(inputValue));
    } 
    System.out.println(numbers);
实际上,我甚至不确定您是否需要
输入
列表

编辑:

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


我的投入:1 2 3 4我的产出:[1.0][1.0,1.0,2.0][1.0,1.0,2.0,1.0,3.0][1.0,1.0,2.0,1.0,2.0,3.0,1.0,2.0,2.0,2.0,4.0]预期产出:[1.0][1.0][1.0,2.0,3.0][1.0,2.0,3.0][1.0,2.0,3.0],所以我们可以更快更直接地看到它…我知道,但出于某种原因,每次我看到它时,网站都认为它的代码不应该是列表?谢谢Ori编辑它,是的,但我需要它打印出来,这样我知道数字正在进入,即使我输入null或什么都没有,循环也不会出现stop@swaguire那么,,您只需使用try-catch块包装
parseDouble
调用,即可捕获NumberFormatException。有没有办法使while循环在输入null时停止?@swaguire我误解了您之前的评论。由于您是从stdin读取输入(而不是从文件读取),因此当您调用readLine()时,程序将始终使用新输入。因此,您应该选择一些表示输入结束的字符串,例如“q”,并在输入该字符串时离开循环。对于我为该类分配的任务,我需要在下一行输入null或nothing时停止while循环。那么,我会创建一个等于null的字符串,然后生成一个参数,表示什么时候输入了与该字符串相等的内容以停止吗?
    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");
       }
    }