Java中是否有一种优雅的编码方式:
if (10 < x < 20) {
...
}
即。 “如果x在10到20之间”
而不是必须写
if ((x > 10) && (x < 20)) {
...
}
谢谢!
答案 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系列。