2016-03-13 2 views
-3

Например, при ударе кода один из результатов был 1 1 0 1. По-видимому, значение (c==0) Boolean было истинным, этот цикл не должен останавливать его работу. Поэтому мне просто интересно, как синтаксис java читает это булево выражение.Используйте более одного или opreator в булевом выражении

int a=0,b=0,c=0,e=0; 
    do { 
     a++; 
     b+=(int)(Math.random()*2); 
     c+=(int)(Math.random()*2); 
     e+=(int)(Math.random()*2); 
     System.out.println(a+" "+b+" "+c+" "+e); 
    } while (a==0|b==0|b==0|e==0); 
    System.out.println("final"+a+" "+b+" "+c+" "+e); 
+0

Если a '0' или' b' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''. Нет короткого замыкания, потому что вы использовали '|' вместо '||'. –

+3

Вы писали 'b == 0' два раза вместо' c == 0' – agi

ответ

1

Ваше состояние цикла a==0|b==0|b==0|e==0. Таким образом, вы никогда не проверяете c==0. Изменение состояния на a==0|b==0|c==0|e==0 должно работать.

Кроме того, я рекомендую использовать оператор || OR, который является логическим ИЛИ, в противоположность побитовому ИЛИ |.

Таким образом, условие вашей петли должно быть a == 0 || b == 0 || c == 0 || e == 0.

+0

Прошу прощения, я набрал неправильный код, я нашел свою проблему через несколько секунд после того, как поставил свой вопрос. –

+0

Приятно слышать, что проблема решена. Кроме того, добро пожаловать в stackoverflow. Вас может заинтересовать [тур] (http://stackoverflow.com/tour). Например, вы должны принять полезный ответ, чтобы указать, что вопрос решен. –

0

Вы никогда не использовали c == 0 в своем цикле while. Итак, если какой-либо из a, b и e станет равным нулю, цикл разобьется.

И java и другие языки считаются логическими как T и F.

  • ТТТТ = Т
    -TTTF = Т
    -...........
    -...........
  • FFFF = F

так что если все ложные, то это будет правда.

Смежные вопросы