【问题标题】:Converting a String ArrayList into a Double ArrayList将 String ArrayList 转换为 Double ArrayList
【发布时间】:2016-03-09 06:52:35
【问题描述】:

我正在尝试将我的 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 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]
  • 这个评论应该在问题本身中,这样我们可以更快更直接地看到...
  • 我知道,但出于某种原因,每次我拥有它时,网站都会认为它的代码
  • 数字不应该是列表的列表吗?
  • 感谢 Ori 编辑它

标签: java string arraylist double


【解决方案1】:

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

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

【讨论】:

  • 是的,但我需要它来打印,所以我知道数字正在输入,即使我输入 null 或没有,循环也不会停止
  • @swaguire 在这种情况下,您只需使用 try catch 块包装 parseDouble 调用,即可捕获 NumberFormatException。
  • 那么有没有办法让它在输入 null 时停止 while 循环?
  • @swaguire 我误解了你之前的评论。由于您正在从标准输入读取输入(而不是从文件中读取),因此当您调用 readLine() 时,程序将始终使用新输入。因此,您应该选择一些表示输入结束的字符串,例如“q”,并在输入该字符串时退出循环。
  • 好吧,对于我为这门课分配的作业,我需要在下一行输入 null 或不输入任何内容时停止 while 循环。那么我会创建一个等于 null 的字符串,然后创建一个参数来说明当输入等于该字符串的内容时停止?
猜你喜欢
  • 2016-10-10
  • 2015-08-06
  • 2011-08-20
  • 1970-01-01
  • 2012-08-31
  • 1970-01-01
  • 2019-10-03
  • 1970-01-01
  • 2017-11-09
相关资源
最近更新 更多