扫描仪输入值并未全部存储

时间:2019-08-14 20:54:31

标签: java java.util.scanner

我有一个扫描仪,可读取字符串作为坐标输入。我必须将这些字符串转换为整数,并将其存储在坐标数组列表中,但我输入的最后一个值未存储在数组列表中。

我已经尝试过在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]

1 个答案:

答案 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;在每个循环开始时声明并重新初始化 这将修复您的代码,但是您应该真正尝试理解所写内容!欢呼。