我正在编写一个程序的简单部分,用户可以在这一年中诞生。代码如下:
while(true){
try {
year = input.nextInt();
break;
} catch (InputMismatchException mismatchException) {
System.err.println("year of birth can only have numbers");
}
}
所以如果我给出一个有效的int(year是int类型),一切都好。如果我给出一个像#34; hello"我期望它做的是再次内部尝试,并在写完错误消息后问我一个数字。 我关于尝试 - 捕捉声明的思维方式是否错误?
答案 0 :(得分:1)
试试这个(我猜输入是java.util.Scanner):
while(input.hasNext()) {
if (input.hasNextInt()) {
year = input.nextInt();
break;
} else {
System.out.println("year of birth can only have numbers");
input.next();
}
}
input.close();
答案 1 :(得分:0)
如果你没有给出数字,你必须尝试这样才能获得下一个输入:
Scanner input = new Scanner(System.in);
int year;
boolean repeat = true;
while(repeat){
try {
repeat = false;
year = input.nextInt();
} catch (InputMismatchException mismatchException) {
System.err.println("year of birth can only have numbers");
input.next();
repeat = true;
}
}
System.out.println("DONE");