2013-03-07 3 views
-6

У меня этот код здесь:Java - Логическое состояние не меняется

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

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

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

     } 

Если это не ясно, я хочу фон краснеть и состояние PlayerOneTurn, чтобы изменить ложное, так что потом она меняется синий, когда я нажму снова. Это работает, но if (PlayerOneTurn == true) PlayerOneTurn = false ;, похоже, не изменяет значение переменной. Я использую полностью неправильное утверждение или что-то не хватает?

+2

Вам не нужно сравнивать логические значения с истинным или ложным. Просто напишите 'if (boolField)' для проверки, является ли это true и 'if (! BoolField)', чтобы проверить, является ли оно ложным. – user

+2

Компонентный комментарий: Переменные по соглашению начинаются с строчных букв. Например. playerOneTurn. –

ответ

1

Использовать else if и аналогичные конструкции.

Вы перезаписать значение PlayerOneTurn в строке 3.

Также убедитесь, что вы вызываете перерисовки при изменении визуальных.

1

Вы меняете цвет на красный и с первой if и изменить его обратно в синий с третьей if заявление, Измените код, изменив if к if-else как этот

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

использовать еще, если

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

В настоящее время ваш код устанавливает цвет в красный цвет, а затем устанавливает PlayerOneTurn на false, а затем снова устанавливает цвет в синий, потому что, ну, PlayerOneTurn является n ow 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 
    } 
Смежные вопросы