2013-12-02 2 views
3
public boolean Winner() { 
    for (int z = 0; z < 3; z++) { 
      if (board[z] != null && board[z] == board[z+3] && board[z] == board[z+6] 
        ) { 
       return true; 
      } 
    } 
    for(int i=0; i<7;i+=3){ 
     if (board[i] != null && board[i] == board[i+1] && board[i] == board[i+2]) { 

    return true;} 
    } 
} 

Это возвращает мне эту ошибку: этот метод должен возвращать результат типа boolean. Что я делаю не так?этот метод должен возвращать результат типа boolean, java

ответ

7

Прямо сейчас, функция не гарантирует возврат boolean, так как возможно, что ни один из операторов if никогда не будет введен.

Вы можете это исправить, как это (но только это сделать, если это на самом деле то ваша логика нуждается!):

public boolean Winner() { 
    for (int z = 0; z < 3; z++) { 
      if (board[z] != null && board[z] == board[z+3] && board[z] == board[z+6] 
        ) { 
       return true; 
      } 
    } 
    for(int i=0; i<7;i+=3){ 
     if (board[i] != null && board[i] == board[i+1] && board[i] == board[i+2]) { 

    return true;} 
    } 

    return false; 
} 
2

Все возможные способы выхода метода должны возвращать что-то. Если ваш код делает это через оба цикла, не имея условия if, чтобы определить значение true, вам нужно вернуться в конце, который указывает, что возвращается.

3

Компилятор Java не делает предположений, что цикл for будет иметь итерацию или что будет выполняться блок-запрос if.

Есть пути выполнения, в которых нет return. Что произойдет, если путь выполнения не выполнит ни один из существующих операторов return и опустится на дно? Там нет return.

Добавить return внизу.

0

компилятор не знает, что по крайней мере один из контуров будет выполняться. Он учитывает все возможности выполнения, и один из них состоит в том, что ни одна из циклов не будет выполнена, и в этом случае нет оператора возврата. Поэтому добавьте оператор возврата из циклов.

Смежные вопросы