java - 递归方法有异常、逻辑错误

标签 java

我正在尝试编写一个代码,插入用户输入,直到输入正确( 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/

相关文章:

java - Ant exclusfile 编译java文件

java.lang.ClassCastException 即使我将它转换为扩展类

java - Hibernate 将时间戳中的时间映射为时间 00 :00:00

java - 从字符串中的小时分钟秒更改为秒

java - 主线程可以在子线程之前死掉吗

java - 未找到 native 方法

java - 动画中的过渡帧

java - 使用java小程序10张牌洗牌器显示图像有错误:(

java - 如何使用 PowerMockito 模拟 Java 中的 set 方法以获取正确的 boolean 返回类型?

java - JBehave 中的嵌套表