Почему следующий блок кода должен возвращать false? - PullRequest
0 голосов
/ 16 сентября 2018
public boolean monkeyTrouble (boolean aSmile, boolean bSmile) {
    if (aSmile && bSmile) {
        return true;
    }
    if  (!aSmile && !bSmile) {
        return true;
    }
    return false;
}

Я не понимаю, почему эта последняя строка кода должна return false;

Кто-нибудь может объяснить? Спасибо.

Ответы [ 2 ]

0 голосов
/ 16 сентября 2018

создайте таблицу истинности и проверьте, что происходит

aSmile bSmile 
true true 
true false 
false true 
false false 

case 1: monkeyTrouble (true, true)

 if (aSmile && bSmile) {
        return true;

case 2: monkeyTrouble (true , false)

 return false

case 3: monkeyTrouble (false, true)

return false

case 4: monkeyTrouble (false, false)

  if  (!aSmile && !bSmile) {
            return true;

, поэтому последний оператор выполняется в двух случаях.

0 голосов
/ 16 сентября 2018

Из описания проблемы:

У нас проблемы, если они оба улыбаются или если ни один из них не улыбается. Верните истину, если у нас проблемы.

Поэтому, если один из них улыбается, у нас нет проблем.

if (aSmile && bSmile) {
   return true;
}

Обложки, если они оба улыбаются. И:

if  (!aSmile && !bSmile) {
    return true;
}

Обложки, если ни один из них не улыбается. Это единственные две комбинации, для которых метод должен возвращать true. Поэтому, если ни одно из этих условий не выполняется, вам нужно вернуть false.

...