我正在尝试编写一个代码,插入用户输入,直到输入正确( double ),它将再次循环,直到输入正确。
下面是代码:
private static double variableNumberInput(String variableName, Scanner userInput) {
double userInputNumber = 0;
try {
System.out.println(String.format("Input value: %s", variableName));
userInputNumber = Double.valueOf(userInput.nextLine());
} catch (Exception exception) {
System.out.println("Please try again");
variableNumberInput(variableName, userInput);
}
return userInputNumber;
}
它按照我想要的方式完美工作...,直到我测试它并故意先插入错误的输入(使用字符串),然后插入正确的输入。结果返回0。
"Input value: X"
incorrect input
"Please try again"
"Input value: X"
1
returns -> 0
我确实尝试过调试它,它显然返回了正确的值,但不知何故,在输入正确后,它在 catch block 内再次调用该方法,仅返回 0。
无法弄清楚为什么会这样,有人可以帮助我理解吗?
最佳答案
您没有保存递归调用的结果。试试这个:
private static double variableNumberInput(String variableName, Scanner userInput) {
double userInputNumber = 0;
try {
System.out.println(String.format("Input value: %s", variableName));
userInputNumber = Double.valueOf(userInput.nextLine());
} catch (Exception exception) {
System.out.println("Please try again");
userInputNumber = variableNumberInput(variableName, userInput);
}
return userInputNumber;
}
注意 catch
block 中的更改。
关于java - 递归方法有异常、逻辑错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70132695/