int i;
Scanner scan = new Scanner(System.in) {
i = scan.nextInt();
}
我想要做的是在用户输入字符而不是整数时捕获扫描程序中的错误。我尝试了下面的代码,但最终要求另一个用户输入(因为在验证第一个scan.nextInt()之后调用另一个scan.nextInt()为i分配值):
int i;
Scanner scan = new Scanner(System.in) {
while (scan.hasNextInt()){
i = scan.nextInt();
} else {
System.out.println("Invalid input!");
}
}
答案 0 :(得分:1)
你的逻辑看起来有些偏差,如果它没有效,你必须消耗一个输入。此外,你的匿名块看起来很奇怪。我想你想要像
这样的东西int i = -1; // <-- give it a default value.
Scanner scan = new Scanner(System.in);
while (scan.hasNext()) { // <-- check for any input.
if (scan.hasNextInt()) { // <-- check if it is an int.
i = scan.nextInt(); // <-- get the int.
break; // <-- end the loop.
} else {
// Read the non int.
System.out.println("Invalid input! " + scan.next());
}
}