2013-09-25 4 views
1

Я пытаюсь запрограммировать игру, и я делаю методы для проверки разных сторон игрока для местности. Я использую логический метод, но netbeans говорит мне, что у меня нет оператора return.java boolean method return statement

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 : Нет, это действительно так. Это хорошая практика, чтобы сделать ваш код максимально понятным. Иногда это означает один оператор return - иногда это означает множественные. –

ответ

6

Что делать, если нет Terrain, чтобы проверить? Тогда тело цикла for никогда не будет выполнено. У вас нет инструкции return после цикла for для учета этого случая. Что бы вы вернули Java в этом случае?

return Поместите заявление после того, как цикл for обрабатывать случай, в котором нет никакого Terrain в Level «s levelTerrain. Таким образом, каждый возможный случай исполнения будет return что-то.

+0

Кроме того, цикл 'for' бесполезен здесь. – nachokk

1

Если for loop не выполнен, то оператор возврата не будет выполнен.

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