【问题标题】:nextLine(), hasNextLine() and NoSuchElementException from java Scanner classjava Scanner 类中的 nextLine()、hasNextLine() 和 NoSuchElementException
【发布时间】:2019-02-13 16:22:15
【问题描述】:

如果我们使用 Scanner 进行控制台输入,我们有两种方法来编写输入循环

1.

    Scanner scanner = new Scanner(System.in);
    while (true) {
        System.out.println(scanner.nextLine());
    }

2.

    Scanner scanner = new Scanner(System.in);
    while (scanner.hasNextLine()) {
        System.out.println(scanner.nextLine());
    }

我相信第二个更正确,因为 hasNextLine() javadoc 中提到此方法正在等待换行。但是为什么第一个也可以工作并等待没有 NoSuchElementException 的新行?

【问题讨论】:

    标签: java io java.util.scanner


    【解决方案1】:

    当输入到达末尾时,您的第一个解决方案将引发异常(例如,当用户在 linux 上按下 Ctrl+D 时,或者当您通过管道将文件输入输入并且我们到达文件末尾时) .第二个解决方案将正常退出。

    如果您只使用交互式命令行,并且从不发送文件结束信号,则没有区别。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-22
      相关资源
      最近更新 更多