Java - 布尔状态不变

时间:2013-03-07 11:57:45

标签: java boolean state

我在这里得到了这段代码:

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

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

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

        }

如果不清楚,我希望背景变为红色并且PlayerOneTurn的状态变为false,那么当我再次单击它时它会变为蓝色。 它有效,但if ( PlayerOneTurn == true ) PlayerOneTurn = false ;似乎没有改变变量的值。 我完全使用了错误的陈述或遗漏了什么吗?

4 个答案:

答案 0 :(得分:1)

使用else if和类似的构造。

覆盖第3行中PlayerOneTurn的值。

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

使用else if

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

答案 3 :(得分:0)

目前,您的代码将颜色设置为红色,然后将PlayerOneTurn设置为false,然后再将颜色设置为蓝色,因为PlayerOneTurn现在为假。

你想要的是

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
    }