2011-04-17 95 views
1

我怎么可以这样做:爪哇 - 双比较

int a=5; 
if(4<=a<=6){ 

} 
在Java中

+0

或者我可以这样做吗? – yydl 2011-04-17 21:39:54

回答

7

使它两个条件:

int a=5; 
if(4<=a && a<=6){ 

} 
3
if(4 <= a && a <= 6) { 
    // do something 
} 

当然,你总是可以写这样的功能在某些Util类:

class Util { 
    public static boolean inclusiveBetween(int num, int a, int b) { 
     return num >= a && num <= b; 
    } 
} 

,然后你可以这样做

if(Util.inclusiveBetween(someResourceIntensiveOpReturningInt(), 4, 6)) { 
    // do things 
} 
+0

真的吗?怎么会这样? – 2011-04-17 21:43:13

+0

我假设a被声明为一个整数,显然... – 2011-04-17 21:44:01

2

Yo你不能,我不这么认为。有什么问题

int a = 5; 
if(a >= 4 && a <= 6) { 
} 

?如果你需要比较许多不同的变量,把它们放在一个数组中,然后对数组进行排序,然后比较数组。

+0

好吧,不一定,如果a是一个函数 - 它意味着不得不调用该函数两次(或分配给临时变量)。 – yydl 2011-04-17 21:44:03

+0

它是一个函数吗?在这种情况下,首先保存函数的输出。如果有很多函数,将它们的结果存储在数组中,然后克隆数组并对其进行排序并比较两个数组。 – Ryan 2011-04-17 21:47:57

+0

是的。不争论。但是这可能是错误的。 – yydl 2011-04-17 21:48:58

5

除了由他人(if(4<=a && a<=6))规定的明显的解决方案,你可以使用commons-langIntRange

Range range = new IntRange(4,6) 
if (range.containsInteger(5)) {..} 

它看起来像一个有点矫枉过正,但根据情况(如果它不是'这很简单),它可能非常有用。

1

你可以这样做。它的丑陋,但可以更快一点。

int a = 5; 
if(a - Integer.MIN_VALUE - 4 <= 2 - Integer.MIN_VALUE) { 

} 

这利用下溢使用将两个比较变成一个。这可以节省大约1-2纳秒。但是,在一些使用情况下,它可能会花费相同的金额,所以只有在尝试微调循环时才尝试。