gpt4 book ai didi

java - 为什么我的 try catch 语句不起作用?

转载 作者:行者123 更新时间:2023-12-02 11:02:04 24 4
gpt4 key购买 nike

该程序相当简单,我只是一个测试 try-catch 语句的初学者,尽管我已经阅读了 2 天,但我无法理解为什么这个特定的 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);

最佳答案

1。问题是什么?

查看无效输入。再试一次必须在try block 内抛出InputMismatchException,并且它不会发生,因为输入没有进入if > 或 else if,您所期望的可以完成

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");
}
<小时/>

2。如何处理这种用法?

但是 Exception 不必用作正常行为,并且要准备好 String,您需要:

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"));
<小时/>

3。如何改进?

你可以改变一些print的位置,所以它可以简化为:

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);
}
System.out.println("Invalid input. Try again\n");
} while (!input.equals("1"));
System.out.println("Okay! good luck!\n");

关于java - 为什么我的 try catch 语句不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51261805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com