提问人:Sean 提问时间:11/12/2017 最后编辑:Sean 更新时间:11/12/2017 访问量:855
用户输入的扫描仪 EOF 处理
Scanner EOF handling for user input
问:
我正在开发一个控制台应用程序,因此我必须能够处理任何用户输入,但是当您输入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 令牌并继续阅读进一步的用户输入?
答: 暂无答案
评论
System.in
Scanner
System.in
Scanner
Scanner
System.in
System.in