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