程序非常简单,我只是测试try-catch语句的初学者,尽管我已经阅读了两天,但我仍然无法理解为什么这个特定的try语句对我不起作用。我知道我可以使用String而不是int,但是我想知道为什么它对此不起作用,以及如何使它起作用。 本质上,我希望用户输入1或2,如果他们输入1,程序(测验)将开始,否则,如果他们按2,程序将终止。如果他们按其他任何键,例如一个字母,另一个数字或尝试进行其他操作,它会说类似“重试”并重复相同的循环。
这似乎是一个愚蠢的问题,但是我对此并不陌生,不胜感激。
Scanner scanner = new Scanner(System.in);
int score = 0;
System.out.println("Are you ready for a quiz?\n1.yes\n2.no");
int input = scanner.nextInt();
do {
scanner.nextInt();
try {
if (input == 2) {
System.out.println("Maybe next time!");
System.exit(0);
} else if (input == 1) {
System.out.println("Okay! good luck!\n");
}
} catch (InputMismatchException e) {
System.out.println("Invalid input. Try again\n");
}
} while (input != 1);
答案 0 :(得分:2)
1 。有什么问题吗?
要看到Invalid input. Try again
和InputMismatchException
必须扔到try
块中,并且不会发生,因为输入没有进入if
或{{1 }},您可以使用
else if
2 。如何处理这种用法?
但是try {
if (input == 2) {
System.out.println("Maybe next time!");
System.exit(0);
} else if (input == 1) {
System.out.println("Okay! good luck!\n");
}else{
throw new InputMismatchException();
}
} catch (InputMismatchException e) {
System.out.println("Invalid input. Try again\n");
}
不必用作正常行为,要准备拥有Exception
,您需要:
Strings
3 。如何改进?
您可以更改某些System.out.println("Are you ready for a quiz?\n1.yes\n2.no");
String input;
do {
input= scanner.nextLine();
if (input.equals("2")) {
System.out.println("Maybe next time!");
System.exit(0);
} else if (input.equals("1")) {
System.out.println("Okay! good luck!\n");
}else{
System.out.println("Invalid input. Try again\n");
}
} while (!input.equals("1"));
的位置,因此可以简化为:
print
答案 1 :(得分:1)
我将int方法转换为String。我以为我只用一个int方法就可以达到同样的目的,但我做不到。谢谢大家,这是现在的样子:
enter code hereScanner scanner = new Scanner(System.in);
System.out.println("Are you ready for a quiz?\n1.yes\n2.no");
String input;
do {
input = scanner.nextLine();
if(input.equals("2")) {
System.out.println("Maybe next time!");
System.exit(0);
} else if (input.equals("1")) {
System.out.println("Okay! good luck!\n");
}
else { System.out.println("Invalid input. Try again\n");
}
} while (!input.equals("1"));
答案 2 :(得分:0)
仅在try块中抛出匹配异常时才执行catch块。 在这种情况下,不会发生任何异常。
答案 3 :(得分:-1)
在else块中抛出异常,您错过了。 就像这样
try {
if (input == 2) {
System.out.println("Maybe next time!");
System.exit(0);
} else if (input == 1) {
System.out.println("Okay! good luck!\n");
}else{
throw new InputMismatchException();
}
} catch (InputMismatchException e) {
System.out.println("Invalid input. Try again\n");
}
答案 4 :(得分:-1)
您正在捕获特定的异常,即InputMismatchException,但您的try块没有可引发此异常的代码,要处理该情况,必须强制抛出该异常,以便您的catch块可以处理该异常。