说我有下面的代码
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextLine()) {
line = scanner.nextLine();
//do something
}
我在控制台中输入的内容是这样的。
Wayne Rooney
Luis Nani
Shinji Kagawa
我想逐行阅读。
但问题是方法hasNextLine在第三行之后等待输入,因为键盘输入(System.in)从未达到EOF。
现在,如何通过按Enter键来达到EOF?因为我不想告诉用户按Ctrl + z来运行我的程序。
一般情况如何?有什么想法吗?
我正在寻找Java方面的解决方案,而不是控制台上的任何命令。
提前致谢
答案 0 :(得分:1)
当您按两次输入时,您最终会读取一个空行。你可以测试一下:
while (scanner.hasNextLine()) {
line = scanner.nextLine();
if (line.equals(""))
break; // this will exit the loop
//do something
}
现在,如果您按两次输入而不在其间输入任何内容,循环将结束。
答案 1 :(得分:1)
通常如何完成?:通常是向用户显示一条消息并请求一些特殊字来完成输入。
public static void main(String[] args) throws IOException
{
Scanner scanner = new Scanner(System.in);
String line;
System.out.println("Enter names (\"QUIT\" to finish)");
while (scanner.hasNextLine()) {
line = scanner.nextLine();
if (line.equals("QUIT")) {
break;
}
}
// ...
}
在上面的示例中,使用的特殊字是"QUIT"
,当然您会将其更改为更合适的字。