如何将该语句转换为三元语句?

Jam*_*s B 2 java ternary-operator conditional-operator

我试图将一个简单的if / else语句转换为三元语句以进行练习,但遇到了麻烦。据我了解,逻辑是:

condition ? (action to take if condition is true) : (action if false);
Run Code Online (Sandbox Code Playgroud)

我的情况是if(result == 8)

我已经尝试过:

result == 8 ? return true : return false;
Run Code Online (Sandbox Code Playgroud)

result = 8 ? return true : return false;
Run Code Online (Sandbox Code Playgroud)

这是我的代码,我想将其结尾转换为

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;
}
Run Code Online (Sandbox Code Playgroud)

我遇到类型不匹配的情况:当我仅使用1个等号时,无法从int转换为boolean,而当使用两个等号时,则得到了无效的令牌“ ==”。

Joh*_*ica 8

condition ? (action to take if condition is true) : (action if false);
Run Code Online (Sandbox Code Playgroud)

三元运算符不是一个完全成熟的替换if/ else。这两个选择必须是表达式,而不是语句。最好将其视为:

condition ? (result if true) : (result if false)
Run Code Online (Sandbox Code Playgroud)

运算符的结果是一个值,然后可以在较大的语句中使用该值。要在return声明中使用它,您需要先行提出return

return result == 8 ? true : false;
Run Code Online (Sandbox Code Playgroud)

注意,这更简单地写成没有三元运算符。

return result == 8;
Run Code Online (Sandbox Code Playgroud)


Ben*_* R. 7

正确的语法是

return (result == 8) ? true : false;
Run Code Online (Sandbox Code Playgroud)

但是在这里你可以

return result == 8;
Run Code Online (Sandbox Code Playgroud)


T.J*_*der 6

我已经尝试过:result == 8吗?返回true:返回false;

距离您不太远。==结果为布尔值,因此您只需要:

return result == 8;
Run Code Online (Sandbox Code Playgroud)

之所以可行,是因为您已经拥有要返回的值(truefalse)。这是的结果result == 8

同样,如果您的原件与(if (result == 8) { return false; } else { return true; })相反,则可以使用!=

// If you wanted the opposite
return result != 8;
Run Code Online (Sandbox Code Playgroud)

在更一般的情况下,假设您想返回"A"if result == 8and "B"else。您可以这样做:

// If you wanted to return "A" (if result == 8) or "B" (if not)
return result == 8 ? "A" : "B";
Run Code Online (Sandbox Code Playgroud)