我正在尝试将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);
}
答案 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");
}
}