0

文档NoSuchElementException当它尝试读取最后一个有效令牌时会抛出该错误。记住这一点,如果有人写这样的东西:

while(scanner.next() !=null){
    // read string into your variable
}

他们假设 null 将被返回,而不是NoSuchElementException在读取最后一个有效令牌后被抛出,(因此他们不保留任何try-catch块)他们这样做是否正确?

编辑:事实证明我可以使用 .hasNext() 。问题解决了。

4

1 回答 1

2

禁止使用 hasNext() 方法是绝对没有意义的。

也就是说,在打破问题的“规则”时,您应该使用以下成语:

while (scanner.hasNext()) {
    String s = scanner.next();
    // do stuff...
}

如果你的情况是你很好奇,那么当没有更多要读取的令牌时,肯定会抛出 NoSuchElementException 。“检查”的唯一方法是 try-catch 块。在异常的情况下它不会返回 null。只要您不处理异常,您的程序就会死掉......

于 2013-09-07T04:48:02.600 回答