【问题标题】:java boolean method return statementjava布尔方法返回语句
【发布时间】:2013-10-01 17:08:44
【问题描述】:

我正在尝试对游戏进行编程,并且正在制定方法来检查玩家不同侧面的地形。我使用的是布尔方法,但 netbeans 告诉我我没有返回语句。

public boolean checkTerrainDown(Level levelToCheck){
    for(Terrain terrainToCheck: levelToCheck.levelTerrain){
        if(y+h<terrainToCheck.getY()){
            return true;
        }else{
            return false;
        }
    }
}

【问题讨论】:

  • 当你的方法必须返回一些东西时,你需要为每个可能的执行路径提供返回语句。
  • 最好只有一个唯一的 return 语句!顺便说一句,你不必为你正在做的事情做一个for..你只需要第一个元素..除了使用return y+h &lt; terraintoCheck.getY();
  • @nachokk:不,真的不是。使您的代码尽可能清晰是一个很好的做法。有时这意味着一个 return 语句 - 有时它意味着多个。
  • @JonSkeet 你说得对,这是我个人的决定,我大多数时候不喜欢多次退货,我认为我只对“简单案例”使用多次退货,但代码清晰易读是我们必须指出的:)。

标签: java methods boolean return


【解决方案1】:

如果没有要检查的Terrain 怎么办?然后for 循环的主体永远不会被执行。在 for 循环之后没有 return 语句来解释这种情况。在这种情况下,Java 会返回什么?

for 循环之后放置一个return 语句来处理LevellevelTerrain 中没有Terrain 的情况。这样,每一个可能的执行情况都会return 一些东西。

【讨论】:

    【解决方案2】:

    如果for loop没有被执行,那么就不会执行return语句。

    【讨论】:

      【解决方案3】:
      public boolean checkTerrainDown(Level levelToCheck){
              //add this line
              boolean mark = false;
          for(Terrain terrainToCheck: levelToCheck.levelTerrain){
              if(y+h<terrainToCheck.getY()){
                      //add this line,remove this //return true;
                  mark = true;
                  //add this line
                  break;
              }
              //else{
                  //return false;
              //}
          }
          //add this line
          return mark;
      }
      

      【讨论】:

        猜你喜欢
        • 2015-05-03
        • 2022-11-11
        • 2016-11-08
        • 1970-01-01
        • 1970-01-01
        • 2012-08-16
        • 2021-09-27
        • 2015-09-01
        • 1970-01-01
        相关资源
        最近更新 更多