2012-12-30 91 views
0

不幸的是,下面的代碼片段不能正常工作。它附加到JLabel,以便在單擊時注意PlayerOne或PlayerTwo是否在播放,並重新排列其布爾值Java Boolean在'IF'語句不起作用

[例如:當mouseClicked:如果playerOne爲true,則執行某些操作並將playerOne設置爲false和playerTwo到true]。

因此,當mouseClicked被激活時,它會交換它們的值!

 public void mouseClicked(MouseEvent arg0) { 
      if(playerOne = true){ 
       playerOne = false; 
       playerTwo = true; 
       boxOne.setIcon(xIcon);     
      } else { if(playerTwo = true){ 
       playerOne = true; 
       playerTwo = false; 
       boxOne.setIcon(oIcon); 
      }} 

在此先感謝, 湯姆!

+3

我的意見是,所有的語法錯誤(這個確實有資格)應該被關閉爲過於本地化。 –

回答

0
在Java

操作數以兩個項目之間是否相等取而代之的是==不是' ='這是一項任務;分配返回指定的值,所以你:

if (playerOne = true) 

將永遠是真實的playerOne將被分配到true,那麼如果將成爲if (true)和相關的語句總是被執行。

重構你的代碼的最佳方式是:

public void mouseClicked(MouseEvent arg0) { 
     if(playerOne) { 
      playerOne = false; 
      playerTwo = true; 
      boxOne.setIcon(xIcon);     
     } else if(playerTwo) { 
      playerOne = true; 
      playerTwo = false; 
      boxOne.setIcon(oIcon); 
     } 
    } 

something == true是多餘的。

2
if(playerTwo = true) 

===

讓「1」或2代替「currentPlayer」整數不是更簡單嗎?這也會阻止兩個隊員同時活躍(大概不可能)的狀態。

2

您使用此

if (playerTwo = true) 

的分配與

if (playerTwo == true) 

或更好

if (playerTwo)