【问题标题】:How can I transform this statement into a ternary?如何将此语句转换为三元?
【发布时间】:2026-02-09 10:40:01
【问题描述】:

我正在尝试将简单的 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,并且在使用两个等号时得到一个无效的标记“==”。

【问题讨论】:

    标签: java ternary-operator conditional-operator


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

    【讨论】:

    • 出色的开场描述,指出了 OP 的理解出错的地方。
    【解决方案2】:

    正确的语法应该是

    return (result == 8) ? true : false;
    

    但在这里你可以

    return result == 8;
    

    【讨论】:

    • 不需要那些括号(当然你可能更喜欢它们作为风格问题)。
    【解决方案3】:

    我已经尝试过:结果 == 8 ?返回真:返回假;

    你离得不远了。 == 产生一个布尔值,所以你只需要:

    return result == 8;
    

    这很有效,因为您已经有了想要返回的值(truefalse);这是result == 8 的结果。

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

    // If you wanted the opposite
    return result != 8;
    

    在更一般的情况下,假设您想在result == 8"B" 否则返回"A"。你会这样做:

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

    【讨论】: