我有一个扫描仪,可读取字符串作为坐标输入。我必须将这些字符串转换为整数,并将其存储在坐标数组列表中,但我输入的最后一个值未存储在数组列表中。
我已经尝试过在for循环外使用startEndLineScan.nextLine();
,但仍然没有任何变化,我还尝试了在存储和解析字符串时使用while循环而不是for循环,但是得到了相同的结果。
ArrayList<Integer> convertedCoords = new ArrayList<Integer>();
String samplePointsCoords[];
Scanner startEndLineScan = new Scanner(System.in);
int count = 1;
while (startEndLineScan.hasNextLine()) {
startEndPointsInputs = startEndLineScan.nextLine();
samplePointsCoords = startEndPointsInputs.split(",");
if (count < 2) {
for (int i = 0; i < samplePointsCoords.length; ++i) {
convertedCoords.add(Integer.parseInt(samplePointsCoords[i]));
}
count++;
} else {
break;
}
}
System.out.print("Points: " + convertedCoords)
输入:
1,2
3,4
预期结果:
点:[1,2,3,4]
实际结果
点:[1,2]
答案 0 :(得分:1)
ArrayList<Integer> convertedCoords = new ArrayList<Integer>();
String samplePointsCoords[];
Scanner startEndLineScan = new Scanner(System.in);
int count;
while (startEndLineScan.hasNextLine()) {
count = 1;
startEndPointsInputs = startEndLineScan.nextLine();
samplePointsCoords = startEndPointsInputs.split(",");
if (count < 2) {
for (int i = 0; i < samplePointsCoords.length; ++i) {
convertedCoords.add(Integer.parseInt(samplePointsCoords[i]));
}
count++;
} else {
break;
}
}
System.out.print("Points: " + convertedCoords)
通知int count;
在每个循环开始时声明并重新初始化
这将修复您的代码,但是您应该真正尝试理解所写内容!欢呼。