不能弄清楚。在第二次while运行时,它甚至不等待用户输入,而是使用
崩溃线程“ main”中的异常java.util.NoSuchElementException:找不到行
Ofc如果没有输入,我几乎不会假设有一行。那我该怎么办?
while (go) {
Scanner jain = new Scanner(System.in);
String jainstr = jain.nextLine();
jain.close();
}
Intellij 2018.2
答案 0 :(得分:3)
jain.close()
关闭扫描程序,其作用是关闭基础流System.in
。
当您再次尝试从该流中读取内容时,您会收到一条错误消息,因为您已将其关闭。
不要在循环中关闭扫描仪。
此外,请勿在每个循环上创建新的扫描仪。在循环之前创建一个扫描程序,然后在循环内部重复使用它。
您不需要真的关闭扫描仪。 IDE经常抱怨您没有关闭它,因为如果流类似于FileInputStream
,则需要关闭它以避免资源泄漏。
一般规则是,您只应关闭打开的流:您没有打开System.in
,所以请不要关闭它。