gpt4 book ai didi

java - java中的递归调用导致不正确的行为

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:17:31 25 4
gpt4 key购买 nike

我有一个递归调用,它显示出奇怪的行为。

    public String recursionMethod() {
String repeatRun = null;
repeatRun = scanner.next();
if (!("Y".equals(repeatRun) || "N".equals(repeatRun))) {
System.out.println("Please enter the correct value. (Y/N)");
this.recursionMethod();
}
System.out.println("value of the entered variable->"+repeatRun);
return repeatRun;
}

当该方法第一次运行时,我输入值“no”。正如预期的那样,它进入了 if block ,因此它再次调用自己要求输入“Y”或“N”。这次,我输入“Y”。它不会再次进入 if block ,但日志会打印成这样。

Do you want to enter another directory? (Y/N)
no
Please enter the correct value. (Y/N)
Y
value of the entered variable->Y
value of the entered variable->no

这种行为很奇怪。为什么它再次选择旧值?在 Debug模式下运行时,它显示在控件转到返回行后,它再次转到 if block 内的行“this.recursionMethod()”。

请帮助我理解以及如何解决这个问题,这样我的方法就不会返回以前的值。

最佳答案

试试这个:

    public String recursionMethod() {
String repeatRun = null;
repeatRun = scanner.next();
if (!("Y".equals(repeatRun) || "N".equals(repeatRun))) {
System.out.println("Please enter the correct value. (Y/N)");
return this.recursionMethod();
}
System.out.println("value of the entered variable->"+repeatRun);
return repeatRun;
}

您在进行递归调用的 if block 中忘记了 return。

关于java - java中的递归调用导致不正确的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39152270/

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