2012-05-18 3 views
14

이러한 조작에 대한 연산자 또는 트릭이 있습니까? 또는 사용해야합니까?Java 체인 부등식 if (5 <i <10)

if(5<i && i<10) 

?

+0

이의 의미 무엇입니까

범위 확인 작업을 수행하는 표준 방법 중 하나 Guava Ranges를 사용하는 것입니다 'i <10'상태? –

+2

5와 10 사이의 숫자 – Whimusical

답변

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

OP는 두 번 썼습니다. OP는 피하려고합니다. –

0

< X < B는 < 0, 또는 x는 단지 싶어 한번 계산하는 식의 경우, (XA) (XB)에 상당

(X - (a + b)/2)^2 < (ba)^2/4

두 개의 엄격하지 않은 동등 물과 동일한 거래. 그러나 (x가 정수가 아니라면) 하나의 엄격하고 하나의 엄격하지 않은 평등을 다루는 방법은 없다고 생각합니다.

1

범위는

비교는 자바 체인 할 수 없습니다. (가 있지만, 범위를 폐쇄에만 제공)

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

또는 아파치 코 몬즈 랭 :

import org.apache.commons.lang3.Range; 
... 
    if(Range.between(5 + 1, 10 - 1).contains(x)){ 
관련 문제