ошибка do-while имеет логическое значение?

#java #do-while

#java #do-while

Вопрос:

     Player Anfallare = new Player("A");
    Player Forsvarare = new Player("F");

    Anfallare.armees = 10;
    Forsvarare.armees = 10;
 do{
    Risk.status();

 }while(Anfallare.armees = 0 OR Forsvarare.armees = 0);
  

Я хотел бы сделать что-то подобное, чтобы это продолжалось status() до тех пор, пока одно из Anfallare.armees или Forsvarare.armees не будет 0 .

Однако это, что я сделал, не работает, я получаю required boolean , found int , как я могу сделать это правильно?

Комментарии:

1. Вы программируете риск-игру, верно? :p

2. @Marcelo это правда 🙂

Ответ №1:

продолжайте работу с status () до тех пор, пока один из Anfallare.armees или Forsvarare.armees не станет равным 0

Поскольку вы хотите запускать, status() пока одно из этих значений не будет равно 0, вам нужно отменить все это:

 do {
    Risk.status();
} while (Anfallare.armees != 0 amp;amp; Forsvarare.armees != 0);
  

В переводе это означает: делать, status() пока оба armees значения отличны от нуля — так что это имеет то же значение, что и «пока одно из них не станет равным 0».

Условие также может быть записано как отрицание того, что вы написали:

 while (! (Anfallare.armees == 0 || Forsvarare.armees == 0) )
  

Но я думаю, что первую версию легче читать…

Комментарии:

1. Я бы предпочел «while (Anfallare.armees > 0 amp;amp; Forsvarare.armees > 0)».

Ответ №2:

Измените ваше условие while на

 while(Anfallare.armees == 0 || Forsvarare.armees == 0)
  

В Java «или» — это || и проверка на равенство — это == .

Ответ №3:

Это должно быть:

 do {
   ...
} while(Anfallare.armees == 0 || Forsvarare.armees == 0);
  

Оператор равенства является == и не = является (то есть оператором присваивания). Кроме того, логическое ИЛИ в Java представлено || и не OR .