我正在尝试将简单的if / else语句转换为三元语句以进行练习,但是遇到了麻烦。据我了解,逻辑是:
condition ? (action to take if condition is true) : (action if false);
我的状况是if(result == 8)
。
我已经尝试过:
result == 8 ? return true : return false;
和
result = 8 ? return true : return false;
这是我的代码,我想在代码结尾处
public boolean sum28(int[] nums) {
int result = 0;
for(int i=0; i<nums.length; i++) {
if(nums[i] == 2) {
result+=2;
}
}
if(result == 8) {
return true;
}
return false;
}
我遇到类型不匹配:当我仅使用1个等于号时,不能从int转换为boolean,而当使用两个等于时,则得到了无效的令牌“ ==”。
答案 0 :(得分:8)
condition ? (action to take if condition is true) : (action if false);
三元运算符不是if
/ else
的完整替代品。这两个选择必须是表达式,而不是语句。最好将其视为:
condition ? (result if true) : (result if false)
运算符的结果是一个值,然后可以在较大的语句中使用该值。要在return
语句中使用它,您需要将return
放在前面。
return result == 8 ? true : false;
请注意,这是更简单的写而没有三元运算符。
return result == 8;
答案 1 :(得分:6)
我已经尝试过:结果== 8?返回true:返回false;
距离您不太远。 ==
会产生布尔值,因此您只需要:
return result == 8;
之所以可行,是因为您已经具有要返回的值(true
或false
);这是result == 8
的结果。
类似地,如果您的原件与(if (result == 8) { return false; } else { return true; }
相反,您将使用!=
:
// If you wanted the opposite
return result != 8;
在更一般的情况下,假设您想返回"A"
,如果返回result == 8
,则返回"B"
。您可以这样:
// If you wanted to return "A" (if result == 8) or "B" (if not)
return result == 8 ? "A" : "B";
答案 2 :(得分:6)
正确的语法是
return (result == 8) ? true : false;
但是在这里您可以
return result == 8;