【发布时间】:2014-09-11 11:37:45
【问题描述】:
下面的代码询问用户他/她想要多少赛车手。
while (true) { // loops forever until break
try { // checks code for exceptions
System.out.println("How many racers should" + " participate in the race?");
amountRacers = in.nextInt();
break; // if no exceptions breaks out of loop
}
catch (InputMismatchException e) { // if an exception appears prints message below
System.err.println("Please enter a number! " + e.getMessage());
continue; // continues to loop if exception is found
}
}
如果在amoutnRacers = in.nextInt(); 处输入一个数字,代码将跳出循环,程序的其余部分运行正常;但是,当我输入诸如“awredsf”之类的内容时,它应该捕获该异常,它确实如此。它不会再次提示用户,而是不断循环,这对我来说没有意义。
程序在连续循环时打印如下:
应该有多少赛车手参加比赛? 应该有多少赛车手参加比赛? 应该有多少赛车手参加比赛? 应该有多少赛车手参加比赛? 应该有多少赛车手参加比赛? 应该有多少赛车手参加比赛? 应该有多少赛车手参加比赛?请输入一个数字!空值 请输入一个数字!空值 请输入一个数字!空值 请输入一个数字!空值 请输入一个数字!空值 请输入一个数字!空值 请输入一个数字!空值 ...
我不明白amountRacers = in.nextInt(); 发生了什么,为什么用户无法输入数字?
【问题讨论】:
-
基本上,您会一次又一次地遇到异常。这大概是因为错误的输入仍然在那里等待读取。
标签: java exception-handling while-loop try-catch inputmismatchexception