扫描仪“无下一行”-错误

时间:2018-08-24 15:21:06

标签: java java.util.scanner

不能弄清楚。在第二次while运行时,它甚至不等待用户输入,而是使用

崩溃
  

线程“ main”中的异常java.util.NoSuchElementException:找不到行

Ofc如果没有输入,我几乎不会假设有一行。那我该怎么办?

 while (go) {

        Scanner jain = new Scanner(System.in);
        String jainstr = jain.nextLine();
        jain.close();
}

Intellij 2018.2

1 个答案:

答案 0 :(得分:3)

jain.close()关闭扫描程序,其作用是关闭基础流System.in

当您再次尝试从该流中读取内容时,您会收到一条错误消息,因为您已将其关闭。

不要在循环中关闭扫描仪。

此外,请勿在每个循环上创建新的扫描仪。在循环之前创建一个扫描程序,然后在循环内部重复使用它。

您不需要真的关闭扫描仪。 IDE经常抱怨您没有关闭它,因为如果流类似于FileInputStream,则需要关闭它以避免资源泄漏。

一般规则是,您只应关闭打开的流:您没有打开System.in,所以请不要关闭它。