我记得在 Python 中遇到过这个问题。这段 Java 代码是我计算三角形面积的 Python 代码的复制品。如果输入非数字值,我会捕获异常,但最终结果会出错。
private static float baseLength() {
float baseLength = 0;
Scanner user_input = new Scanner(System.in);
try {
while (baseLength <= 0) {
System.out.print("Enter the base length of the triangle: ");
baseLength = user_input.nextFloat();
if (baseLength <=0) {
System.out.println("Error. Plase enter a number higher than 0.");
}
}
} catch (InputMismatchException badChar) {
System.err.println("You have entered a bad value. Please try again");
baseLength();
}
return baseLength;
它将从错误的数字中恢复,但不能从非数字的值中恢复。我仍然无法弄清楚确切的问题是什么。
最佳答案
您可以在 try/catch block 周围放置 while
循环来实现此目的:
private static float baseLength() {
float baseLength = 0;
Scanner user_input = new Scanner(System.in);
while (baseLength <= 0) {
try {
System.out.print("Enter the base length of the triangle: ");
baseLength = user_input.nextFloat();
if (baseLength <= 0) {
System.out.println("Error. Plase enter a number higher than 0.");
}
} catch (InputMismatchException badChar) {
System.err.println("You have entered a bad value. Please try again");
}
}
return baseLength;
}
关于java - Java异常后重新提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34059407/