尝试将用户输入作为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的输入。保存为变量。所有不符合此标准的输入都应触发一个重复的提示,直到输入符合此标准。有什么建议吗?
答案 0 :(得分:1)
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()
的用途。如果输入有效的内容,则退出该循环。