Java-布尔状态不变

Java-布尔状态不变,java,boolean,state,Java,Boolean,State,我这里有一个代码: if ( event.getSource() == Square0 ) { if ( PlayerOneTurn == true ) Square0.setBackground(Color.red); if ( PlayerOneTurn == true ) PlayerOneTurn = false ; if ( PlayerOneTurn == false ) Square0.s

我这里有一个代码:

if ( event.getSource() == Square0 ) 
        {

            if ( PlayerOneTurn == true ) Square0.setBackground(Color.red);
            if ( PlayerOneTurn == true ) PlayerOneTurn = false ;

            if ( PlayerOneTurn == false ) Square0.setBackground(Color.blue) ;

        }
如果不清楚,我希望背景变为红色,播放状态变为false,因此再次单击时它会变为蓝色。 如果(playeronturn==true)playeronturn=false,则它可以工作似乎不会更改变量的值。
我使用的是完全错误的语句还是遗漏了什么?

使用
else if
和类似的结构

您可以覆盖第3行中
playerTurn
的值


另外,确保在更改视觉效果时触发重新绘制。

您正在使用第一个
if
将颜色更改为红色,并使用第三个
if
语句将其更改为蓝色,通过将
if
更改为
if else
来修改代码,如下所示

if ( PlayerOneTurn == true ) 
{
     Square0.setBackground(Color.red);
     PlayerOneTurn = false;
}
else
{
     Square0.setBackground(Color.blue) ;
     PlayerOneTurn = true;
}
使用else if

if (PlayerOneTurn) {
 Square0.setBackground(Color.red);
PlayerOneTurn = false;
}
else
{
 Square0.setBackground(Color.blue) 
}

当前,您的代码将颜色设置为红色,然后将
playeronturn
设置为false,然后再次将颜色设置为蓝色,因为
playeronturn
现在为false

你想要的是

if ( event.getSource() == Square0 ) {

        if ( PlayerOneTurn == true ) {
            Square0.setBackground(Color.red);
            PlayerOneTurn = false ;
        } else {
            Square0.setBackground(Color.blue) ;
            PlayerOneTurn = true;
        }
    }
或者,更惯用的关于布尔语:

if ( event.getSource() == Square0 ) {

        if ( PlayerOneTurn ) {
            Square0.setBackground(Color.red);
        } else {
            Square0.setBackground(Color.blue) ;
        }

        PlayerOneTurn = !PlayerOneTurn;  // True becomes false and false becomes true
    }

您不需要将布尔值与true或false进行比较。只要写
if(boolField)
检查它是否为真,写
if(!boolField)
检查它是否为假。旁注:按惯例变量以小写字母开头。例如,轮流玩。