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

512*_*bee 0 java if-statement ternary-operator

如何将以下2行if-statments写入一行代码:

  if (s1.length() == 0)
       return "hello";
  if (s2.length() == 0)
       return "goodbye";
Run Code Online (Sandbox Code Playgroud)

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

  if ? then : else
Run Code Online (Sandbox Code Playgroud)

但是我的例子PLUS中没有"else",我有两个"if"语句,所以这让我很困惑.

是否可以将这两个if语句组合成一行代码?

T.J*_*der 9

但我的例子中没有"其他"

为了用条件运算符写这个,我们最后需要 "else"的情况.所以:

if (s1.length() == 0)
    return "hello";
if (s2.length() == 0)
    return "goodbye";
return "neither";
Run Code Online (Sandbox Code Playgroud)

如果没有该最终值,则无法使用条件运算符编写此值.

有了这个最终值,你可以,但我不建议从可读性或维护角度来看:

return s1.length() == 0 ? "hello" : s2.length() == 0 ? "goodbye" : "neither";
Run Code Online (Sandbox Code Playgroud)

你可以看到一个if/else几乎映射的"then"和"else"如何直接进入条件的第二和第三个操作数.


有趣的事实:它被恰当地称为条件运算符.它通常被称为"三元运算符",但实际上它只是一个三元运算符(一个接受三个操作数的运算符,就像二元运算符接受两个操作数而一元运算符接受一个操作数).它是Java目前唯一的三元运营商,但从理论上讲,总有一天,它可能会有其他人......