如何将两个 if 语句写成一行(三元运算符)?

How To Write Two If Statements Into One Single Line (Ternary Operator)?

如何将以下两行 if 语句写入一行代码:

  if (s1.length() == 0)
       return "hello";
  if (s2.length() == 0)
       return "goodbye";

我想学习如何以三元运算符格式编写它:

  if ? then : else

但我的示例中没有 "else",而且我有两个 "if" 语句,所以让我感到困惑。

是否可以将这 2 个 if 语句合并为一行代码?

but I don't have an "else" in my example

为了使用条件运算符编写此代码,我们需要 最后的 "else" 案例。所以:

if (s1.length() == 0)
    return "hello";
if (s2.length() == 0)
    return "goodbye";
return "neither";

没有那个最终值,你不能用条件运算符写这个。

使用 最终值,你可以,但从可读性或维护的角度我不推荐它:

return s1.length() == 0 ? "hello" : s2.length() == 0 ? "goodbye" : "neither";

您可以看到 if/else 的 "then" 和 "else" 如何直接映射到条件的第二个和第三个操作数。


有趣的事实:它被恰当地称为 conditional operator。它通常被称为 "the ternary operator," 但实际上它只是 a 三元运算符(接受三个操作数的运算符,就像二元运算符一样接受两个操作数,一元运算符接受一个)。它是目前唯一的三元运算符 Java,但理论上,有一天,它可能会有其他...

可能喜欢

return (s1.length() == 0) ? "hello" : (s2.length() == 0 ? "goodbye" : "something when none is satisfied");