Есть ли какой-либо оператор или трюк для такой операции? Или необходимо использовать
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
То же самое дело с двумя нестрогими равенствами. Однако я не думаю, что есть способ справиться с одним строгим и одним нестрогим равенством (если только х не является целым числом).