【发布时间】:2013-12-15 18:56:04
【问题描述】:
在下面的代码中,我试图让程序捕获来自用户的无效输入的异常,但仍然允许程序在捕获异常后循环回到方法的开头。但是,在我的示例中,一旦出现异常,程序就会终止。我该如何纠正这个问题?提前非常感谢!
public static void add() {
// Setting up random
Random random = new Random();
// Declaring Integers
int num1;
int num2;
int result;
int input;
input = 0;
// Declaring boolean for userAnswer (Defaulted to false)
boolean correctAnswer = false;
do {
// Create two random numbers between 1 and 100
num1 = random.nextInt(100);
num1++;
num2 = random.nextInt(100);
num2++;
// Displaying numbers for user and getting user input for answer
System.out.println("Adding numbers...");
System.out.printf("What is: %d + %d? Please enter answer below", num1, num2);
result = num1 + num2;
do {
try {
input = scanner.nextInt();
} catch (Exception ex) {
// Print error message
System.out.println("Sorry, invalid number entered for addition");
// flush scanner
scanner.next();
correctAnswer=false;
}
} while (correctAnswer);
// Line break for code clarity
System.out.println();
// if else statement to determine if answer is correct
if (result == input) {
System.out.println("Well done, you guessed corectly!");
correctAnswer = true;
} else {
System.out.println("Sorry incorrect, please guess again");
}
} while (!correctAnswer);
}// End of add
【问题讨论】:
-
你确定异常是在try/catch里面抛出的吗?
-
正如@marsze 所说,错误可能发生在
try... catch...之外,在这种情况下它不会被捕获并将终止(除非在其他地方捕获)。如果你已经确定它在这段代码中,我猜scanner.next();触发了第二个异常,因为它在你的 catch 语句中,所以它失败了。您遇到了什么异常? -
你内心的 do/while 似乎永远不会爆发。什么时候将 correctAnswer 设置为
true?
标签: java loops exception try-catch