【问题标题】:Check two conditions with two different outcomes (ternary operators)检查具有两个不同结果的两个条件(三元运算符)
【发布时间】:2016-02-25 16:43:51
【问题描述】:

我创建了一个变量,

newval1 = lb + (ub - lb)*rnd.nextDouble();

必须位于两个值之间,bounds[0]bounds[1]。目前我用三元运算符在两行中实现了这个检查:

            newval1 = ((newval1<bounds[0]) ? bounds[0] : newval1);
            newval1 = ((newval1>bounds[1]) ? bounds[1] : newval1);

毫无疑问,有一种更有效的方法可以将newval1 与这些界限进行比较,最好在 1 行中进行比较。有什么建议么?

【问题讨论】:

  • 你可以在一行中使用三元运算符(newval1 &lt; bounds[0] ? bounds[0] : newval1 &gt; bounds[1] ? bounds[1] : newval1),但为什么不写几个ifs呢?如果代码更清晰,那么一点点冗长也没有错。
  • @resueman:在你的例子中,它是一个嵌套的三元运算符吗?
  • 是的。它与您拥有的基本相同,仅在一条线上。 (我并不是说您应该使用它。这只是单行解决方案的一个示例)。

标签: java ternary-operator


【解决方案1】:
val = Math.min(bounds[1], Math.max(bounds[0], val));

【讨论】:

  • 顺便说一句,这与您的代码完全相同,但以更常见的方式编写。
猜你喜欢
  • 1970-01-01
  • 2021-05-13
  • 2019-07-21
  • 2020-07-18
  • 1970-01-01
  • 2016-11-02
  • 2017-03-02
  • 2019-01-22
  • 2020-01-19
相关资源
最近更新 更多