2011-04-17 96 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納秒。但是,在一些使用情況下,它可能會花費相同的金額,所以只有在嘗試微調循環時才嘗試。