2016-05-30 23 views
0

ユーザーがtic tac toeを達成したときにメッセージボックスを表示しようとしています。現在、メソッドの閉じ括弧が強調表示され、return文が見つからないというエラーがあります。これは勝利があるかどうかを決定し、メッセージボックスを表示するクラスです。メッセージボックスが表示されないのはなぜですか?

public boolean checkRows() 
{ 
    for (int i = 0; i < 3; i++) 
    { 
     if (checkRowCol(board[i][0], board[i][1], board[i][2]) == true) 
     { 
      JOptionPane.showMessageDialog(null, "You Win", "Title", JOptionPane.PLAIN_MESSAGE); 
     } 
     else if (checkRowCol(board[i][0], board[i][1], board[i][2]) == false) 
     { 
      return false; 
     } 
    } 

} 

私にはなぜ返品陳述がないのか分かりません。

+3

checkRowCol(board [i] [0]、board [i] [1]、board [i] [2]) 'がtrueの場合、' checkRows'は何を返すべきですか? – hexafraction

答えて

0

あなたのメソッドは結果としてブール値を要求します。 最初のステートメントがtrueの場合は、ShowMessageDialogueメソッドを実行しますが、その直後にブール値を返すのを待っています。

public void checkRows() 
    { 
    for (int i = 0; i < 3; i++) 
     { 
     if (checkRowCol(board[i][0], board[i][1], board[i][2]) == true) 
      JOptionPane.showMessageDialog(null, "You Win", "Title", 
      JOptionPane.PLAIN_MESSAGE); 
    } 

} 

は、あなたの三目並べゲームは、このメソッドを呼び出して、ユーザーが移動を実行するたびに行います:彼が獲得し​​た場合に、checkRows方法をします、私はあなたのコードがどのように動作するかわかりませんが、これがうまくいくようにそれはそう

0

Javaコンパイラは、すべてのコードパスがブール値を返すとは考えていないため、文句を言います。 (この場合も同様です) メソッドを閉じる前にreturn false;を追加することでこれを修正できます。よりよい解決策が

else return false; 

代わりの

else if (checkRowCol(board[i][0], board[i][1], board[i][2]) == false) { return false; } 

この方法を使用するかもしれないが、機能は常にブール値を返します。

関連する問題