0

我不知道这是否是一个菜鸟问题,但在我的代码中:

void process() {
   ...
   while (input.hasNext()) {
       \\ DO WHATEVERITNEEDSTODO
   }
   out.close();
   ...
}

它在 while 语句中执行所有操作,但之后它不会继续,因此不会关闭。即使我把 System.out.println("Hello hello") 而不是 out.close() 作为一个简单的检查,它也不会打印 "Hello hello"

我基本上是在我的输入完成所有操作后尝试让 out.close() 发生。还有另一种方法可以做到这一点吗?

4

1 回答 1

0

根据文档hasNext(),“此方法可能会在等待输入扫描时阻塞。” 我猜你是在某种永无止境的输入上运行扫描仪(比如可能是 System.in?)。因此,您会看到循环的主体正在执行,但最终,您会用完要处理的内容,并且它会永远挂起,等待是否有“下一个”。

换句话说,仅仅因为目前没有任何东西可以从 Scanner 的底层流中读取,这并不意味着永远不会有。只要流保持打开状态,最终可能会有更多内容可供阅读。

于 2013-10-19T00:25:35.690 回答