优雅的编码方式(10 <x <20)

时间:2010-04-12 18:29:32

标签: java

Java中是否有一种优雅的编码方式:

if (10 < x < 20) {
   ...
}

即。 “如果x在10到20之间”

而不是必须写

if ((x > 10) && (x < 20)) {
   ...
}

谢谢!

6 个答案:

答案 0 :(得分:14)

没有。 <运算符总是比较两个项并产生一个布尔值,因此您不能“优雅地”链接它们。你可以这样做:

if (10 < x && x < 20)
{
    ...
}

答案 1 :(得分:5)

肯尼在评论中钉了它。

if (10 < x && x < 20)

你想让它们保持低于或低于两者;当你试图快速阅读时,反转比较的方向会产生令人困惑的逻辑。

答案 2 :(得分:5)

不,但你可以重新安排它以使其更好,或者如果它让你烦恼就写一个包装:

if (InRange(x, 10, 20)) { ... }

或者,正如卡尔所说:

if (new Range(10, 20).contains(x)) { ... }

虽然我个人认为,但我没有看到这一点。这是一个无用的抽象。裸布尔语句非常明显。

虽然现在我考虑过它,并且根据下面的Carl的评论,有时候Range是一个完全有效和有用的抽象(例如在处理Feeds时)。因此,根据x的语义,您可能需要抽象。

答案 3 :(得分:4)

  if(x < 20)
  {
   if(x > 10)
   {

   //...

   }
  }

OR

 if(x > 10)
  {
   if(x < 20)
   {

   //...

   }
  }

答案 4 :(得分:1)

由于&&的优先级低于><,因此您可以做的唯一事情是松开额外的括号:

if (x > 10 && x < 20) {
   ...
}

除此之外:没有更短的路。

答案 5 :(得分:0)

最快的方式是开关。


编辑:

switch(x) {
  case 10:
  case 11:
  case 12:
  case 13:
  ...
  case 19: System.out.println("yes");
}

编译成跳转表,而不是很长的ifs系列。