扫描仪EOF处理用户输入

时间:2017-11-11 17:53:49

标签: java exception-handling java.util.scanner infinite-loop eof

我正在开发一个控制台应用程序,因此我必须能够处理任何用户输入,但是当您输入EOF字符时,我无法解决扫描程序奇怪的行为。

public static void main(String[] args){
    Scanner scan = new Scanner(System.in);
    String[] options = {"Login", "Register", "Quit"};
    while(true){
        for(int i = 0; i < options.length; i++)
            System.out.println(i + ": " + options[i]);
        try {
            switch(Integer.parseInt(scan.nextLine())){
                case 0:
                    login();
                    break;
                case 1:
                    register();
                    break;
                case 2:
                    return;
                default:
                    System.out,println("must be between 0 and " + (options.length - 1));
            } catch(NumberFormatException | NoSuchElementException e){
                System.err.println(e.getMessage);
                if(DEBUG)
                    e.printStackTrace();
            }
        }
    } 
}

这似乎可以覆盖用户可能尝试的任何格式错误的输入,但是当我输入我的EOF字符时,扫描程序将无限地抛出NoSuchElementException,而不是消耗EOF并提示用户输入新内容。我知道EOF是什么,但是当用户可以输入它时,我应该对它进行处理,使应用程序仍然可以运行。

如何让扫描仪使用EOF令牌并继续阅读更多用户输入?

0 个答案:

没有答案