Java 在Scanner.hasNext()之后
我不知道这是否是一个noob问题,但在我的代码中:Java 在Scanner.hasNext()之后,java,java.util.scanner,Java,Java.util.scanner,我不知道这是否是一个noob问题,但在我的代码中: void process() { ... while (input.hasNext()) { \\ DO WHATEVERITNEEDSTODO } out.close(); ... } 它执行while语句中的所有操作,但之后它不会继续,因此不会关闭。即使我将System.out.println(“Hello Hello”)而不是out.close()作为一个简单的检查,它也不会打印“Hello
void process() {
...
while (input.hasNext()) {
\\ DO WHATEVERITNEEDSTODO
}
out.close();
...
}
它执行while语句中的所有操作,但之后它不会继续,因此不会关闭。即使我将System.out.println(“Hello Hello”)而不是out.close()作为一个简单的检查,它也不会打印“Hello Hello”
我基本上是想让out.close()在输入完成所有操作后发生。还有其他方法可以做到这一点吗?Per,“此方法可能会在等待输入扫描时阻塞。”我猜您正在对某种永远不会结束的输入(例如System.in?)运行扫描仪。因此,您会看到循环的主体正在执行,但最终,要处理的内容将用尽,它将永远挂起,等待是否有“下一个”
换一种说法,仅仅因为目前没有任何东西可以从扫描器的底层流中读取,并不意味着永远不会有。只要流保持打开状态,最终可能会有更多内容可供阅读。我们需要查看
中的代码在输入时做了什么。hasNext()
是否返回false?如果没有,它将永远留在循环中。请显示“input.hasNext()”的代码。您的扫描仪从什么资源读取?系统在
或@Scott你知道海报上说的是库函数Scanner#hasNext()
,对吗?