2013-09-25 185 views
1

我想編程一個遊戲,我正在製作方法來檢查玩家的地形不同。我正在使用布爾方法,但netbeans告訴我我沒有return語句。java布爾方法返回語句

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

當你的方法必須返回某些東西時,你需要爲每個可能的執行路徑提供return語句。 – Prateek

+1

這是一個很好的做法,只有一個唯一的返回語句!順便說一下,你不必爲你正在做的事情做一個'for' ..你只需要第一個元素..除了使用'return y + h nachokk

+3

@nachokk :不,它確實不是。儘可能讓代碼儘可能清晰是一種很好的做法。有時候這意味着一個返回語句 - 有時它意味着多個語句。 –

回答

6

如果沒有Terrain檢查?然後,for循環的主體永遠不會被執行。在for循環之後沒有return語句來解釋這種情況。在這種情況下,Java會返回什麼結果?

放置一個return語句後for循環處理,其中有在沒有Terrain的情況下LevellevelTerrain。那樣,每一個可能的執行情況都會是return

+0

另外'for'循環在這裏沒用.. – nachokk

1

如果for loop不執行的話就沒有return語句將被執行。

+0

你的意思是不清楚。請提高你的答案。 –

1
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; 
}