gpt4 book ai didi

java - 为什么我在这段代码中收到无限递归警告,尽管它不是无限的?

转载 作者:行者123 更新时间:2023-12-01 10:55:17 27 4
gpt4 key购买 nike

所以我写了一段代码来捕获错误的输入格式,并要求用户更正。它工作正常,完全按照预期执行,但 Netbeans 抛出“方法 validate 将无限递归”警告。我对它进行了彻底的测试,它确实不会无限递归,所以我想知道是什么让 Netbeans 认为它​​会无限递归。

编辑:我现在意识到 int validInput = 0; 是这里的罪魁祸首。如果用户输入 char,它仍然设置为零并且循环中断。但我的主要观点仍然是为什么 Netbeans 实际上认为这段代码有可能无限递归,尽管有一些限制阻止它。

这是以下方法(请注意,maxBound 始终由数组长度预定义):

public static int validate(int maxBound) {
int controlVar = maxBound;
Scanner scan = new Scanner(System.in);
boolean wrongInputLoopThrough = false;
int validatedInput = 0;
do {
if (wrongInputLoopThrough) {
System.out.println("Integer value is out of bound! Please repeat your input.");
}
try {
validatedInput = Integer.parseInt(scan.nextLine());
wrongInputLoopThrough = true;
} catch (NumberFormatException e) {
System.out.println("Not a number, please enter a number");
validatedInput = validate(controlVar); //here is my recursion to return control flow back to the top of the method
}
} while (validatedInput < 0 || validatedInput > controlVar);
return validatedInput;
}

最佳答案

您在捕获中再次调用验证,因此如果它无效并且您传递相同的值,它可能会无限期地捕获。你应该继续循环,而不是捕获它,就像它是一个超出界限的整数一样......

关于java - 为什么我在这段代码中收到无限递归警告,尽管它不是无限的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33638446/

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