Java Boolean In';如果';语句不起作用

Java Boolean In';如果';语句不起作用,java,if-statement,boolean,statements,Java,If Statement,Boolean,Statements,不幸的是,下面的代码片段没有正常工作。它附加到一个JLabel上,因此当单击时,会注意到播放的是PlayerOne还是PlayerTwo,并相应地重新排列它们的布尔值 [例如:当鼠标单击时:如果playerOne为true,则执行某些操作,并将playerOne设置为false,将playerTwo设置为true] 所以,当mouseClicked被激活时,它交换它们的值 public void mouseClicked(MouseEvent arg0) {

不幸的是,下面的代码片段没有正常工作。它附加到一个JLabel上,因此当单击时,会注意到播放的是PlayerOne还是PlayerTwo,并相应地重新排列它们的布尔值

[例如:当鼠标单击时:如果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);
            }}
提前感谢,, 汤姆

=
不是
=

如果用一个1或2的“currentPlayer”整数来代替,不是更简单吗?这也将防止(可能不可能的)两个玩家同时活跃的状态

=
不是
=


如果用一个1或2的“currentPlayer”整数来代替,不是更简单吗?这还可以防止同时激活两个玩家的状态(可能是不可能的)。

您在这里使用的是作业

if (playerTwo = true)
取代

if (playerTwo == true)
或者更好

if (playerTwo)

您在这里使用的是作业

if (playerTwo = true)
取代

if (playerTwo == true)
或者更好

if (playerTwo)

在java中,测试两项之间相等性的操作数是==而不是'=',这是一个赋值;赋值返回指定的值,因此:

if (playerOne = true)
将始终为true,因为playeron将被分配到
true
,则if将变为
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
是多余的。

在java中,测试两个项之间相等性的操作数是==而不是'=',这是一个赋值;赋值返回指定的值,因此:

if (playerOne = true)
将始终为true,因为playeron将被分配到
true
,则if将变为
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
将是多余的。

我的观点是,所有语法错误(这一个不符合条件)都应该关闭为过于本地化。我的观点是,所有语法错误(这一个符合条件)都应该关闭为过于本地化。