2015-07-17 5 views
2

Я делаю практику вопрос, который:Какой разница между булевым = истинной и просто логическим

У нас есть громкий говорящий попугай. Параметр «час» - это текущее время в диапазоне 0..23. Мы находимся в беде, если попугай говорит, а час до 7 или после 20. Верните истину, если мы в беде.

parrotTrouble (правда, 6) → верно parrotTrouble (правда, 7) → ложь parrotTrouble (ложь, 6) → ложь

Мой код:

`public boolean parrotTrouble(boolean talking, int hour) { 
if ((talking = true) && (hour < 7 || hour > 20)){ 
return true; 
} 
else 
return false; 
}` 

Правильный ответ:

public boolean parrotTrouble(boolean talking, int hour) { 
      return (talking && (hour < 7 || hour > 20)); 
      // Need extra parenthesis around the || clause 
      // since && binds more tightly than || 
     // && is like arithmetic *, || is like arithmetic + 

} 

Мне интересно, в чем разница между разговором = истинным и просто разговором.

+1

вы присваиваете истину разговору в выражении if, и он разрешен к '(talk = true) == true' – SomeJavaGuy

+2

Первый пример уже глючит; это повлияет на 'true' на логическую переменную' talk', и поэтому условие всегда будет истинным. Автор, вероятно, имел в виду 'talk == true', но тогда просто« говорить »достаточно – fge

+0

, он должен (говорить = true) или просто (говорить), что вы выполняете назначение talk = true – codeaholicguy

ответ

6

talking = true присваивает true talking и возвращает true.

if (talking == true) такой же, как if (talking), так как оба возвращают true.

0

в Java, знак равенства представляет собой присвоения, двойное равное представляет сравнение.

В вашем случае вы назначаете вместо сравнения.

0

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

Принимать во внимание, что talking = true - это задание, которое всегда будет оцениваться как true.

0

В Java, если оператор требует результата, если условие = истина // if(condition)
, чтобы иметь возможность выполнить код в фигурных скобках // {}
=> это правда, что вы можете назначить непосредственно, т.е. if(true)
или может генерироваться как результат состояния, т.е. if(val==true) теперь в вашем случае
когда вы кладете talking = true это назначить верно говорить и вернуть истинный
и в другом использовании кода говорить непосредственно, который содержит истинное значение, так что возвращает истину