2015-11-30 2 views
1

Я пишу проблему с tic tac toe.Если оператор не обрабатывается - Java

Класс TicTacToe отлично работает, но первый оператор if в моем основном классе не обрабатывается. Класс TicTacToe - это не то, что неправильно, потому что когда игрок 1 побеждает, oNew.checkWinner(1) возвращает true. (Я проверил, поставив System.out.println(oNew.checkWinner(1)); прямо перед оператором if).

Но тогда он не переходит в инструкцию if, чтобы разбить цикл while и просто продолжает. Он делает то же самое с первым, если тоже.

Нечетная часть - это прекрасно работает для 2-го оператора if и 2-го else if.

public static void main(String[] args) { 

     TicTacToe oNew = new TicTacToe(); 
     String champ = ""; 
     boolean hasWon = false; 

     oNew.getMove(); 
     while(hasWon == false){ 
      oNew.setMove(1); 
      oNew.getMove(); 
      if (oNew.checkWinner(1) == true){ 
       champ = "Player 1 wins."; 
       hasWon = true; 
      } 
      else if(oNew.checkCatsGame() == true){ 
       champ = "Draw"; 
       hasWon = true; 
      } 
      oNew.setMove(2); 
      oNew.getMove(); 
      if (oNew.checkWinner(2) == true){ 
       champ = "Player 2 wins."; 
       hasWon = true; 
      } 
      else if(oNew.checkCatsGame() == true){ 
       champ = "Draw"; 
       hasWon = true; 
      } 
     } 
     System.out.println(champ); 

    } 

ответ

2

Для того, чтобы выйти из цикла, когда одна из условий является истинным, добавить либо break или continue (если вы этого не сделаете, операторы, следующие за первым, если-иначе-если блок выполняются до текущей итерации концы петли и условие цикла проверяется еще раз):

if (oNew.checkWinner(1)){ 
    champ = "Player 1 wins."; 
    hasWon = true; 
    continue; 
} 
else if(oNew.checkCatsGame()){ 
    champ = "Draw"; 
    hasWon = true; 
    continue; 
} 
  • продолжает бы конец текущей итерации, и цикл в то время как будет выход из раза условия проверяется на следующую итерацию.

  • break прекратит цикл независимо от значения hasWon.

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