如何让 CTRL+Z 不弄乱 java 控制台程序

How to make CTRL+Z NOT mess up a java console program

我的最终项目要求之一是,如果我的是基于控制台的,则输入 ctrl + z 不会搞砸程序。来自我的扫描仪的 nextLine() 语句在一个 while 循环中,当我试图从输入 ctrl+z 中捕获 NoSuchElementException 时,错误catch 块中的消息无限循环。

        while (!advanceTurn) {

        System.out.print("\nCommand: ");

        try {input = s.nextLine();}
        catch (NoSuchElementException e) {

            System.out.println("Use the EXIT command to exit the game.");
            s = new Scanner(System.in);
            input = "asdfjkl;";
            continue;

        }

        System.out.println();

        // This takes the input and decides what command was entered (if any) and deals
        // with it appropriately.
        parseCommand(input);

    }

正如您在代码中看到的那样,我尝试在捕获到错误时重新初始化扫描器,然后跳回到循环的开头以便抓取新行,但它出现即使没有来自键盘的新输入,错误仍然存​​在,所以我很困惑如何解决这个问题。感谢任何帮助,谢谢。

编辑:如果有帮助,我正在使用 Eclipse IDE。

我今天和我的导师谈过,我们通过在 catch 块中使用 return 语句跳出 while 循环解决了这个问题,然后在再次进入循环之前将 s 初始化为一个新的扫描器.由于这段代码的目的是重复获取命令,直到输入构成回合结束的某些命令,所以每次输入命令都会进入while循环,现在对我来说已经很好了。