【发布时间】: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 < bounds[0] ? bounds[0] : newval1 > bounds[1] ? bounds[1] : newval1),但为什么不写几个ifs呢?如果代码更清晰,那么一点点冗长也没有错。 -
@resueman:在你的例子中,它是一个嵌套的三元运算符吗?
-
是的。它与您拥有的基本相同,仅在一条线上。 (我并不是说您应该使用它。这只是单行解决方案的一个示例)。
标签: java ternary-operator