2016-05-30 99 views
0

我試圖讓用戶實現井字棋時出現一個消息框。目前有一個錯誤,突出顯示了該方法的右括號,並表示缺少返回語句。這是確定是否有勝利並顯示消息框的類。爲什麼不顯示消息框?

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

} 

我不知道爲什麼它說有一個缺少的return語句。

+3

如果'checkRowCol(board [i] [0],board [i] [1],board [i] [2])'是真的,那麼'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; } 

這樣,函數總是返回一個布爾值。