While用Scanner.hasNextInt()循环跳过最后一项

时间:2019-02-20 11:46:12

标签: java

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

ngOnInit

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

1,2,3,9
5,9
3

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

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, 来探索

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

只需添加一个条件即可检查新行,

enter image description here