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

时间:2017-02-08 07:34:21

标签: java if-statement ternary-operator

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

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

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

  if ? then : else

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

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

2 个答案:

答案 0 :(得分:9)

  

但我没有"否则"在我的例子中

为了用条件运算符写这个,我们需要" 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几乎直接映射到条件的第二和第三个操作数。

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

答案 1 :(得分:1)

可能像

$datetime1 = new DateTime($row100wed["intime"]);
$datetime2 = new DateTime($c_time);  
$interval = $datetime2->diff($datetime1); 
$interval->format('%d')." Days ".$interval->format('%h')." Hours ".$interval->format('%i')." Minutes";
$resu =  24*$interval->format('%d') + $interval->format('%h') . " Hours " . $interval->format('%i') . " Minutes";
echo   $resu;
if(($resu>='0 Hours 8 Minutes')&&($resu<'0 Hours 18 Minutes')) {     
    echo "true";
}
    else if($resu<'0 Hours 8 Minutes')
{
    echo "false";
}