我正在尝试使用Scanner进行练习,但是遇到了奇怪的情况,我希望获得社区的帮助以了解这一点。
我有一个带有以下数字的文本文件

1,2,3,9
5,9
3


使用以下Java代码读取文本文件

fsc = new Scanner(new File(fileName));
fsc.useDelimiter(",");
while (fsc.hasNextLine()) {
    while (fsc.hasNextInt()){
        System.out.print(fsc.nextInt() + ",");
    }
    System.out.println();
    fsc.nextLine();
}


并且结果总是跳过最后一个数字。

1,2,3,
5,
3,


我如何使其不忽略最后一项?

编辑:一些解决方案要求将它们夹到一个数组并将字符串转换为整数,但是我想使用Scanner.nextInt()代替

编辑2:对不起,似乎很多人误解了这个问题。我的意思是丢失的是每行的最后一位数字丢失了!

最佳答案

这是因为您删除了标准定界符,即换行符。你需要

fsc.useDelimiter("[ ,\r\n]");


所以这变成

fsc = new Scanner(new File(fileName));
fsc.useDelimiter("[ ,\r\n]");
while (fsc.hasNextLine()) {
    while (fsc.hasNextInt()){
        System.out.print(fsc.nextInt() + ",");
    }
    System.out.println();
    if (fsc.hasNextLine())
        fsc.nextLine();
}

09-11 18:50