【发布时间】:2020-09-08 17:52:33
【问题描述】:
用 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% 的问题覆盖率,我不知道为什么。我收到的反馈说(假,假,真)是真的,但我期待的是假的。 and (true, false, false) 是真的,但它也应该是假的。
【问题讨论】:
-
仅从 isAsleep 开始。后面的情况只是 isMorning 和 isMom 的组合。
-
我不想为你解决这个问题,但我可以给你一个暗示,你让自己很难受。例如,想想你睡着的情况。如果睡着了,你永远不会回答,所以你只需要检查一次那个条件。
-
啊,我明白了。非常感谢您指出这一点。
-
您应该能够减少到一个没有任何
ifs 的退货声明。否定这个;asleep || (morning && !mom)
标签: java if-statement