为啥下面的代码块应该返回 false?
Posted
技术标签:
【中文标题】为啥下面的代码块应该返回 false?【英文标题】:Why should the following block of code return false?为什么下面的代码块应该返回 false? 【发布时间】:2019-02-20 17:12:42 【问题描述】:public boolean monkeyTrouble (boolean aSmile, boolean bSmile)
if (aSmile && bSmile)
return true;
if (!aSmile && !bSmile)
return true;
return false;
我不明白为什么最后一行代码应该return false;
谁能解释一下?谢谢。
【问题讨论】:
因为如果只有一只猴子在微笑,那么就没有猴子的烦恼 创建一个真值表。显示所有 4 种可能的输入值组合的表格。然后手动计算方法的结果。然后检查导致错误的行... 您可以根据需要返回 true。但是前两个块将毫无用处,因为它总是会返回 true。我们无法告诉您自己的方法(没有明确的文档)应该返回什么。这是你的选择。该方法应该做什么? 顺便说一句:您可以将代码简化为return aSmile == bSmile;
【参考方案1】:
从问题描述来看:
如果他们都在微笑,或者他们都没有微笑,我们就有麻烦了。如果我们遇到麻烦,则返回 true。
因此,如果其中一个人在微笑,我们就没有麻烦。
if (aSmile && bSmile)
return true;
如果他们俩都在微笑,请掩饰。并且:
if (!aSmile && !bSmile)
return true;
如果他们都没有微笑,请掩饰。这些是该方法应返回 true 的仅有的两种组合。因此,如果这些条件都不成立,则需要返回 false。
【讨论】:
哦,这有点像“else-statement”吗?因为这是唯一的另一种可能性 @Sam 类似。它只是不是用else
编写的,因为如果任何if
语句为真,它将return
并退出该方法,因此没有必要。【参考方案2】:
创建一个真值表并检查发生了什么
aSmile bSmile
true true
true false
false true
false false
案例一:monkeyTrouble (true, true)
if (aSmile && bSmile)
return true;
案例2:monkeyTrouble (true , false)
return false
案例3:monkeyTrouble (false, true)
return false
案例4:monkeyTrouble (false, false)
if (!aSmile && !bSmile)
return true;
这就是为什么最后一条语句在两种情况下执行的原因。
【讨论】:
以上是关于为啥下面的代码块应该返回 false?的主要内容,如果未能解决你的问题,请参考以下文章