如何提示用户输入0到100之间的数字?

尝试将用户输入作为0到100之间的int,并提示用户“再试一次”,只要他们的输入与此条件不匹配即可。

到目前为止,我的代码在实现我的目标方面有些成功:

import java.util.Scanner; public class FinalTestGrade { public static void main(String[] args) { Scanner studentInput = new Scanner (System.in ); int testGrade; System.out.println("Please enter your test grade (0 to 100)"); while (!studentInput.hasNextInt()) { System.out.println("Your input does not match the criteria, please enter a number between 0 and 100"); studentInput.next(); } testGrade = studentInput.nextInt(); while (testGrade > 100 || testGrade < 0) { System.out.println("Your input does not match the criteria, please enter a number between 0 and 100"); testGrade = studentInput.nextInt(); } 

如您所见,程序将检查输入是否为int。 一旦用户成功输入int,程序将检查以确保其输入介于0和100之间。当用户输入非int以响应第二个提示(由第二个while循环启动)时,会出现问题。 以下是一个例子:

 run: Please enter your test grade (0 to 100) P Your input does not match the criteria, please enter a number between 0 and 100 109 Your input does not match the criteria, please enter a number between 0 and 100 P Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Scanner.java:840) at java.util.Scanner.next(Scanner.java:1461) at java.util.Scanner.nextInt(Scanner.java:2091) at java.util.Scanner.nextInt(Scanner.java:2050) at finaltestgrade.FinalTestGrade.main(FinalTestGrade.java:24) Java Result: 1 BUILD SUCCESSFUL (total time: 9 seconds) 

长话短说,我想知道是否有办法合并我的while循环,以便表示为0到100之间的int表示的输入被接受并保存为变量。 所有不符合此标准的输入都应触发一个重复的提示,直到输入符合此标准。 有什么建议么?

 int testGrade = -1 ; Scanner studentInput = new Scanner(System.in); while (testGrade > 100 || testGrade < 0) { System.out.println("Your input does not match the criteria, please enter a number between 0 and 100"); while(!studentInput.hasNextInt()) { studentInput.next() ; } testGrade = studentInput.nextInt(); } 

有一个无限循环来检查流中是否存在无效字符。 如果是这样,请使用它,这就是hasNextInt()的用途。 如果输入有效的内容,则退出该循环。