Функция if-оператора, которая возвращает логическое значение - PullRequest
0 голосов
/ 25 февраля 2019

Напишите функцию на Java, которая реализует следующую логику: ваш мобильный телефон звонит.Верните true, если вам нужно ответить.Обычно вы отвечаете, кроме того, что утром вы отвечаете, только если звонит ваша мама.Во всех случаях, если вы спите, вы не отвечаете.

public boolean answerCell(boolean isMorning, boolean isMom, boolean isAsleep)
{
    if (isMom && isMorning && isAsleep)
    {
        return false;
    }
    if ((!isMom) && isMorning && isAsleep)
    {
        return false;
    }
    if (isMorning && isMom && (!isAsleep))
    {
        return true;
    }
    if ((!isMorning) && isMom && isAsleep)
    {
        return false;
    }
    else
    {
        return true;
    }
}

Для кода, который я написал выше, я получаю только 63% покрытия проблемы и не могу понять, почему.Обратная связь, которую я получаю, говорит, что (Ложь, ложь, правда) было правдой, но я ожидал ложного.и (правда, ложь, ложь) было правдой, но ожидалось, что оно будет ложным.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Упрощение операторов if

Это подробный метод, позволяющий понять, что предполагается делать:

public boolean answerCell(boolean isMorning, boolean isMom, boolean isAsleep){
    if(isAsleep){
        return false;
    }else{
        if(isMorning){
            if(isMom){
                return true;
            }else{
                return false;
            }
        }else{
            return true;
        }
    }
}

Но вот что вы можете сделать соператор if в одной строке:

public boolean answerCell(boolean isMorning, boolean isMom, boolean isAsleep){
    return isAsleep?false:isMorning?isMom:true;
}

Если вам нужна дополнительная информация о выражении if в одной строке, вы можете проверить этот ресурс , хотя в Интернете много информации.

0 голосов
/ 25 февраля 2019

Старайтесь не разбивать все условия на одно утверждение.Возьмите задачу по одному шагу за раз.

Обычно вы отвечаете,

return true;

, за исключением того, что утром вы отвечаете, только если ваша мама звонит,

if (isMorning) {
    if (isMom) {
        return true;
    }
    else {
        return false;
    }
} 
return true;

Во всех случаях, если вы спите, вы не отвечаете.

if (isAsleep) {
    return false;
}
if (isMorning) {
    if (isMom) {
        return true;
    }
    else {
        return false;
    }
} 
return true;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...