为什么scanner.hasNextLine()会挂起?

时间:2012-04-17 15:30:22

标签: java java.util.scanner

当我尝试在我的程序中使用scanner.hasNextLine()时,它只是坐在那里并挂起。我想知道是否有任何方法可以解决这个问题或我可以使用的任何替代方案。 编辑:这背后的原因是我可以从扫描仪中删除所有内容(扫描仪只有一行)。因此,如果有办法从扫描仪中删除所有内容,那就更容易了。

2 个答案:

答案 0 :(得分:6)

这是否回答了你的问题? StackOverFlow : why-does-hasnextline-never-end

如果没有,请在此处提供您的代码示例,以获得有关您的问题的更具描述性的答案。你很可能正在读一些永无止境的东西。如果您有文件或字符串,则不应该有问题,但如果您正在读取恒定的数据流,则可能会挂起,具体取决于您的代码编写方式以及您在扫描仪中读取的内容。

答案 1 :(得分:1)

查看java.util.scanner的api(因为我认为这是你正在使用的课程。

http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html

请注意hasNextLine doc:

如果此扫描仪的输入中有另一行,则返回true。 此方法可能会在等待输入时阻止。扫描程序不会超过任何输入。

(强调我的)

因此,如果您有一个未关闭的开放流,它将阻塞直到另一条线进入,或者流被关闭。