我正在开发一个控制台应用程序,因此我必须能够处理任何用户输入,但是当您输入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令牌并继续阅读更多用户输入?