The docs说当NoSuchElementException
尝试读取最后一个有效令牌时会抛出while(scanner.next() !=null){
// read string into your variable
}
。记住这一点,如果有人写下这样的话:
NoSuchElementException
他们假设返回null而不是在读取过最后一个有效令牌后抛出try-catch
(因此他们没有保留任何{{1}}块)它们是否正确这样做?
编辑:事实证明我可以使用.hasNext()。问题解决了。
答案 0 :(得分:2)
禁止使用hasNext()方法绝对不合情理。
那就是说,在打破你的问题的“规则”时,你应该使用以下习语:
while (scanner.hasNext()) {
String s = scanner.next();
// do stuff...
}
如果你的情况是你很好奇,那么当没有更多的令牌被阅读时,会抛出NoSuchElementException。 “检查”这个的唯一方法是try-catch块。在异常情况下,不将返回null。如果您不处理异常,您的程序将会死亡......