在用户的Ctrl + Z输入上终止Java程序

时间:2014-03-10 08:26:00

标签: java java.util.scanner

我有以下代码:

        String inputString;
        Scanner in = new Scanner(System.in);
        while (true) {
            System.out.print("jcp>");
            inputString = in.nextLine();

            String[] tokens = inputString.split(" ");
            switch (tokens[0]) {
                case "new":
                    createNewInstance(tokens);
                    break;
                case "call":
                    callMethod(tokens);
                    break;
                case "print":
                    Object obj = hashMap.get(tokens[1]);
                    print(obj);
                    break;
                default:
                    System.out.println("Illegal command!");
                    break;
            }
        }

我只是希望程序在用户点击ctrl + Z

时突破while循环

2 个答案:

答案 0 :(得分:1)

当流已到达终点时,

nextLine()将抛出NoSuchElementException。或者您可以使用in.hasNextLine().

答案 1 :(得分:0)

Ctrl + Z退出程序会很糟糕,Ctrl + C | Ctrl + D已经结束了终端上的程序执行,所以它会像你期望用户输入命令一样好,告诉他们输入{ {1}}可以使用退出程序的命令以及exitx等快捷方式,而不是完整的单词。

以下代码怎么样,

e

如果String inputString; Scanner in = new Scanner(System.in); while (true) { System.out.print("jcp>"); inputString = in.nextLine(); String[] tokens = inputString.split(" "); switch (tokens[0]) { case "n": case "new": createNewInstance(tokens); break; case "c": case "call": callMethod(tokens); break; case "p": case "print": Object obj = hashMap.get(tokens[1]); print(obj); break; case "e": case "x": case "exit": return; default: System.out.println("Illegal command!"); break; } } 不起作用,您可以将其替换为return;