扫描仪的Re .next()方法:上次有效令牌读取后会发生什么?

时间:2013-09-07 04:42:46

标签: java nosuchelementexception

The docs说当NoSuchElementException尝试读取最后一个有效令牌时会抛出while(scanner.next() !=null){ // read string into your variable } 。记住这一点,如果有人写下这样的话:

NoSuchElementException

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

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

1 个答案:

答案 0 :(得分:2)

禁止使用hasNext()方法绝对不合情理。

那就是说,在打破你的问题的“规则”时,你应该使用以下习语:

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

如果你的情况是你很好奇,那么当没有更多的令牌被阅读时,会抛出NoSuchElementException。 “检查”这个的唯一方法是try-catch块。在异常情况下,将返回null。如果您不处理异常,您的程序将会死亡......