【问题标题】: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;

标签: java return boolean


【解决方案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;

这就是为什么最后一条语句在两种情况下执行的原因。

【讨论】:

    猜你喜欢
    • 2012-12-17
    • 2017-05-07
    • 2017-07-09
    • 1970-01-01
    • 2012-08-08
    • 2012-05-21
    • 1970-01-01
    • 1970-01-01
    • 2018-11-09
    相关资源
    最近更新 更多