2012-05-18 61 views

回答

12

Java中沒有這種東西(除非你使用布爾值)。

5<i導致<10左側的布爾值,這是編譯器不喜歡的。

23

你不能鏈不等式。但是,您可以定義將執行此類檢查的靜態布爾方法isInRange(value, low, high)

一些其他語言,如Python或Icon,允許這種表示法。

+10

也許這些參數應該按照「isInRange(low,value,high)」排序。 'isInRange(5,i,10)'。 –

+0

確實,謝謝:) – Gyscos

4

恐怕目前在Java中不支持鏈接不等式。檢查this後的語言。

5

您可以使用單個比較,但通常比其值更復雜。

if (i - (Integer.MIN_VALUE + 6) < Integer.MIN_VALUE + (10 - 6)) 

這使用下溢來調整所有的值5和以下是一個很大的正值。

你會使用這個的唯一原因是作爲一個微型優化。

+3

你兩次寫了'6',可能是OP想避免的東西。 –

0

一個< X < b爲相當於(XA)(XB)< 0,或者如果x是你僅想計算一次表達式,

(X - (A + B)/ 2)^ 2 <(ba)^ 2/4

與兩個非嚴格平等相同。但是,我認爲沒有辦法處理一個嚴格的和一個非嚴格的平等,但是(除非x是一個整數)。

1

範圍

比較不能用Java鏈接。

做了一系列檢查的標準方法是使用兩種Guava Ranges

import com.google.common.collect.Range; 
... 
    if(Range.open(5, 10).contains(x)){ 

或Apache Commons Lang中(只提供關閉範圍,雖然):

import org.apache.commons.lang3.Range; 
... 
    if(Range.between(5 + 1, 10 - 1).contains(x)){ 
相關問題