下面的代码询问用户他/她想要多少个赛车手。
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”之类的内容时,它应该捕获该异常,并且确实如此。它没有连续提示用户,而是连续循环,这对我来说没有意义。
amoutnRacers = in.nextInt();
连续循环时,程序打印如下:
多少赛车手应该参加比赛?多少赛车手应该参加比赛?多少赛车手应该参加比赛?多少赛车手应该参加比赛?多少赛车手应该参加比赛?多少赛车手应该参加比赛?多少位赛车手可以参加比赛?请输入数字!null请输入一个数字!null请输入一个数字!null请输入一个数字!null请输入一个数字!null请输入一个数字!null请输入一个数字!空值 …
我不知道发生了什么amountRacers = in.nextInt();,为什么用户不能输入数字?
amountRacers = in.nextInt();
input.next()捕获InputMismatchException即可添加 。
input.next()
catch (InputMismatchException e) { //if an exception appears prints message below System.err.println("Please enter a number! " + e.getMessage()); input.next(); // clear scanner wrong input continue; // continues to loop if exception is found }
您需要清除错误的输入,而扫描仪不会自动清除。