这种操作有什么操作符或技巧吗?或者是否有必要使用
if(5<i && i<10)
?
这种操作有什么操作符或技巧吗?或者是否有必要使用
if(5<i && i<10)
?
你不能把不平等串联起来。但是,您可以定义一个静态布尔方法isInRange(value, low, high)
来执行此类检查。
其他一些语言,如 Python 或Icon,允许使用这种表示法。
你不能把不平等串联起来。但是,您可以定义一个静态布尔方法isInRange(value, low, high)
来执行此类检查。
其他一些语言,如 Python 或Icon,允许使用这种表示法。
Java 中没有这样的东西(除非您使用布尔值)。
结果是编译器不喜欢5<i
的左侧的布尔值。<10
恐怕目前 Java 不支持链式不等式。检查这篇文章的语言。
您可以使用单个比较,但通常比它的价值更复杂。
if (i - (Integer.MIN_VALUE + 6) < Integer.MIN_VALUE + (10 - 6))
这使用下溢将所有值 5 及以下调整为一个大的正值。
您使用它的唯一原因是作为微优化。
比较不能在 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)){
a < x < b 等价于 (xa)(xb)<0,或者如果 x 是您只想计算一次的表达式,
(x - (a+b)/2) ^ 2 < (ba)^2 / 4
同样处理两个非严格等式。但是,我认为没有办法处理一个严格相等和一个非严格相等(除非 x 是整数)。