【问题标题】:Java Return not exiting method (loops)Java返回不退出方法(循环)
【发布时间】:2013-03-21 13:23:25
【问题描述】:

我正在为学校做一个项目,我在一个方法中有许多嵌套循环。我可以验证我的代码是否达到了“return true”; “return false;”之前的声明使用太多 System.out.println 语句。

是否存在 return 不会立即退出方法的情况。在我的代码中,它到达“return true;”,但随后继续执行该方法。

谢谢 - 第一次发帖,但其他问题的长期学生

编辑:显示我的代码 - 这是针对加州大学伯克利分校的项目,因此他们不允许我们发布完整代码。这是重要的部分。

我的代码中没有“try 语句”。这是我的方法的最后,它有很多循环(while 和 for)循环。

if (x == 7 && turn == 5){
                    System.out.println("TRUE RESULT");
                    return true;


                }

                nextVictory(turn, x, y, color,z);
                alive = false;
            }

        }


          }
    }
    System.out.println("FALSE RESULT");
    return false;
}

我有打印声明来验证我在哪里。结果如下:

真实结果

错误的结果

错误的结果

错误的结果

错误的结果

【问题讨论】:

  • 显示您的代码。
  • 要么使用 tryfinally 块,要么设置一个布尔值并在完成后返回。

标签: java loops methods nested return


【解决方案1】:

有没有return没有立即退出方法的情况?

唯一想到的情况是return 语句是否在try-finally 块内。 finally 块仍然会被执行。

另一种可能表现出类似行为的情况是,如果您的方法是递归的。在这种情况下,嵌套调用中的return 语句实际上会返回给调用者。但是,如果调用者是方法本身,则该方法的外观可能会在 return 之后继续执行。

【讨论】:

    【解决方案2】:

    如果您的代码到达return true 行,它必须退出该方法。所以它没有到达这条线。 System.out.printlnreturn 语句之间发生了一些事情。如果您显示代码会有所帮助。

    【讨论】:

      猜你喜欢
      • 2012-10-14
      • 2016-09-20
      • 1970-01-01
      • 2012-05-15
      • 1970-01-01
      • 2017-02-27
      • 1970-01-01
      • 2014-09-30
      • 1970-01-01
      相关资源
      最近更新 更多