'IF' 语句中的 Java 布尔值不起作用
很遗憾,下面的代码片段无法正常运行.它附加到 JLabel 上,以便在单击时注意到 PlayerOne 或 PlayerTwo 是否正在播放,并相应地重新排列它们的布尔值
Unfortunately the snippet of code below is not functioning as it should. It's attached to a JLabel so that when clicked, notices whether PlayerOne or PlayerTwo is playing, and re-arranges their boolean values accordingly
[例如:当鼠标点击时:如果 playerOne 为 true,则做某事,将 playerOne 设置为 false,将 playerTwo 设置为 true].
[ex: When mouseClicked:If playerOne is true, then do something, and set playerOne to false and playerTwo to true].
所以,当 mouseClicked 被激活时,它会交换它们的值!
So, it swaps their values when mouseClicked is activated!
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);
}}
提前致谢,汤姆!
推荐答案
在java中,测试两个项目是否相等的操作数是==而不是'=',这是一个赋值;赋值返回分配的值,所以你的:
in java the operand to test equality between two items is == not '=' which is an assignment; an assignment returns the assigned value, so your :
if (playerOne = true)
将始终为真,因为 playerOne 将被分配给 true
,然后 if 将变为 if (true)
,并且将始终执行关联的语句.
will always be true as playerOne will be assigned to true
, then the if will become if (true)
and the statement associated will always be executed.
重构代码的最佳方法是:
the best way to refactor your code is:
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
将是多余的.
相关文章