如果按下Ctrl + d,如何使用stdin进行测试?

时间:2017-02-07 15:27:01

标签: java while-loop stdin terminate

我正在使用以下循环从标准输入读取:

Scanner stdin = new Scanner(System.in);

while (stdin.hasNextLine() && stdin.nextLine() != null) {

        String line = stdin.nextLine();

        if (!(line.contains("#"))) {
            input.add(line);
        }

        if (line.contentEquals("q")) {
            break;
        }

 }

现在,如果我只需输入q并按Enter即可轻松终止,但是当用户在新行上按Ctrl + d时,我应该终止程序。当我按下Ctrl + d没有任何反应时,我无法解决这个问题。

1 个答案:

答案 0 :(得分:0)

问题是hasNextLine()hasLine()等待用户输入"输入"。

Ctrl-D不是...输入。

因此,您必须研究逐字逐句的方式"例如。

也许scanner.next()会返回更有用的内容。

除此之外,事情变得更加复杂,例如,请参阅here

因此,真正的,不那么有用的答案实际上是:Java扫描程序和" ctrl-something"击键不是最好的朋友。

您可以查看一些提供curses功能的库。