Java - двойное сравнение - PullRequest
       4

Java - двойное сравнение

1 голос
/ 18 апреля 2011

Как я могу сделать что-то вроде:

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

}

на Java?

Ответы [ 5 ]

7 голосов
/ 18 апреля 2011

Сделай два условия:

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

}
5 голосов
/ 18 апреля 2011

Помимо очевидного решения, заявленного другими (if(4<=a && a<=6)), вы можете использовать commons-lang 's IntRange:

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

Это выглядит немного излишним, но в зависимости от ситуации (если это не так тривиально), это может быть очень полезно.

3 голосов
/ 18 апреля 2011
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
}
2 голосов
/ 18 апреля 2011

Вы не можете, я не думаю. Что не так с

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

? Если вам нужно сравнить много разных переменных, поместить их в массив и отсортировать массив, а затем сравнить массивы.

1 голос
/ 18 апреля 2011

Вы можете сделать это. Это некрасиво, но может быть немного быстрее.

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

}

Это использует использование underflow, чтобы превратить два сравнения в одно. Это может сэкономить около 1-2 наносекунд. Однако в некоторых случаях он может стоить столько же, поэтому пробуйте его, только если вы пытаетесь подстроить петлю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...