Есть ли какой-либо оператор или трюк для такой операции? Или необходимо использовать
if(5<i && i<10)
?
Есть ли какой-либо оператор или трюк для такой операции? Или необходимо использовать
if(5<i && i<10)
?
В Java нет такой вещи (если вы не работаете с булевыми).
5<i
выводит логическое значение с левой стороны на <10
, которое не нравится компилятору.
Вы не можете цеплять неравенства. Однако вы можете определить статический логический метод isInRange(value, low, high)
, который выполнит такую проверку.
Некоторые другие языки, такие как Python или Icon, позволяют использовать эти обозначения.
Вы можете использовать одно сравнение, но оно сложнее, чем обычно.
if (i - (Integer.MIN_VALUE + 6) < Integer.MIN_VALUE + (10 - 6))
В этом случае используется underflow, чтобы изменить все значения 5 и ниже на большое положительное значение.
Единственная причина, по которой вы будете использовать это, - это микро-оптимизация.
Я боюсь, что в настоящее время Java не поддерживается в Java. Отметьте этот сообщение для языков, которые делают.
Сравнение не может быть привязано к Java.
Стандартный способ выполнения проверки диапазона - использовать Диапазоны Guava:
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)){
a < x < b эквивалентно (x-a) (x-b) < 0, или если x является выражением, которое вы только хотите рассчитать один раз,
(x - (a + b)/2) ^ 2 < (b-a) ^ 2/4
То же самое дело с двумя нестрогими равенствами. Однако я не думаю, что есть способ справиться с одним строгим и одним нестрогим равенством (если только х не является целым числом).