我不知道这是否是一个noob问题,但在我的代码中:
void process() {
...
while (input.hasNext()) {
\\ DO WHATEVERITNEEDSTODO
}
out.close();
...
}
它在while语句中执行所有操作,但之后它不会继续,因此不会关闭。即使我将System.out.println(“Hello hello”)而不是out.close()作为简单检查,它也不会打印“Hello hello”
我基本上试图让out.close()在我的输入完成所有内容之后发生。还有另一种方法吗?
答案 0 :(得分:0)
Per the docs for hasNext()
,“此方法在等待输入扫描时可能会阻塞。”我猜你在某种输入上运行一个永远不会结束的扫描器(比如System.in?)。因此,你会看到循环的主体正在执行,但最终,你没有要处理的东西,它会永远挂起,等待那里成为“下一个”或不是。
换句话说,仅仅因为目前没有任何东西可以从Scanner的底层流中读取,这并不意味着永远不会有。只要流保持打开状态,最终可以读取更多内容。