Java:如何在控制台程序中使用scanner.hasNextLine而不使用Ctrl + Z.

时间:2014-01-20 23:47:44

标签: java console-application java.util.scanner

说我有下面的代码

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方面的解决方案,而不是控制台上的任何命令。

提前致谢

2 个答案:

答案 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",当然您会将其更改为更合适的字。