我正在尝试编写一个小程序来计算某些成绩,但我得到的是inputMismatchException
,但我不知道为什么。问题是我在有机会输入整数之前得到了异常。
有人可以帮我解决。
public static void main(String[] args)
{
Scanner input = new Scanner("System.in");
int passes = 0;
int failures = 0;
int studentCounter = 1;
int result;
while(studentCounter <= 10)
{
//Zelf aangepast = output gewijzigd
System.out.println("Geef het resultaat in (1 = geslaagd, 2 = gebuisd).");
result = input.nextInt();
if(result == 1)
{
passes = passes + 1;
}
else
{
failures = failures + 1;
}
studentCounter = studentCounter + 1;
}
//Zelf aangepast = output gewijzigd
System.out.printf("Aantal leerlingen geslaagd: %d\nAantal leerlingen gebuisd: %d\n", passes, failures);
if(passes > 8)
{
//Zelf aangepast = output gewijzigd
System.out.println("Bonus voor de leerkracht!");
}
}
}
因此,您可以看到我无法为变量结果分配任何数字。
答案 0 :(得分:1)
inputMismatchException
表示Scanner
(input
)收到的内容不是nextInt
预期的int:
由扫描程序抛出,表示检索到的令牌与预期类型的模式不匹配,或者令牌超出预期类型的范围。
简而言之,您为扫描仪提供的下一个标记不是int。
答案 1 :(得分:0)
当用户在调用Scanner.nextInt()
时未输入有效整数时会发生这种情况。要解决这个问题,你可以使用如下例外:
while(studentCounter <= 10)
{
//Zelf aangepast = output gewijzigd
System.out.println("Geef het resultaat in (1 = geslaagd, 2 = gebuisd).");
try {
result = input.nextInt();
}
catch(InputMismatchException i) {
System.out.println("Please enter integers only.");
result = 0;
}
if(result == 1)
{
passes = passes + 1;
}
else
{
failures = failures + 1;
}
studentCounter = studentCounter + 1;
}