如果我们要使用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的新行?
答案 0 :(得分:1)
您的第一个解决方案将在到达输入结尾时(例如,当用户在linux上按下Ctrl+D
或将文件通过管道输入到输入中而到达结尾时)引发异常。文件)。第二个解决方案将正常退出。
如果您仅使用交互式命令行,并且从不发送文件结束信号,则没有任何区别。