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)
检查它是否为假。旁注:按惯例变量以小写字母开头。例如,轮流玩。