为什么以下代码块返回false?

时间:2018-09-16 17:13:10

标签: java return boolean

import UIKit

let json = """
{
"returnResult":1,
"data":["account1", "account2", "account3"]
}
"""

struct account: Codable {
    var data: [String]
}

let accounts: account = try JSONDecoder().decode(account.self, from:json.data(using: .utf8)!)

print(accounts)

/*
RESULT RETURNED
account(data: ["account1", "account2", "account3"])

RESULT REQUIRED
["account1", "account2", "account3"]

PICKERVIEW CODE FROM WORKING VIEW

// picker view methods
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent    component: Int) -> Int {
return accs.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int,    forComponent component: Int) -> account? {
return accs[row]
}

// delegate method
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
let selectedDriver = accs[row]
displayLbl.text = selectedDriver
}
*/

我不明白为什么最后一行代码应该public boolean monkeyTrouble (boolean aSmile, boolean bSmile) { if (aSmile && bSmile) { return true; } if (!aSmile && !bSmile) { return true; } return false; }

有人可以解释吗?谢谢。

2 个答案:

答案 0 :(得分:5)

根据问题描述:

  

如果他们俩都在微笑,或者他们俩都不在微笑,我们会遇到麻烦。如果遇到麻烦,请返回true。

因此,如果其中一个在微笑,我们就不会有麻烦。

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

如果他们两个都在微笑,则覆盖。并且:

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

如果他们两个都不在微笑,请盖上。这是方法应返回true的仅有的两个组合。因此,如果这两个条件都不成立,则需要返回false。

答案 1 :(得分:1)

创建真值表并检查会发生什么情况

aSmile bSmile 
true true 
true false 
false true 
false false 

情况1: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;

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