Java链接不等式(5

时间:2012-05-18 19:01:47

标签: java types primitive logical-operators

这种操作有没有操作员或技巧? 或者是否有必要使用

if(5<i && i<10)

6 个答案:

答案 0 :(得分:23)

你不能把不平等联系在一起。但是,您可以定义一个静态布尔方法isInRange(value, low, high)来执行此类检查。

其他一些语言,如Python或Icon,允许这种表示法。

答案 1 :(得分:12)

Java中没有这样的东西(除非你使用布尔值)。

5<i导致编译器不喜欢的<10左侧的布尔值。

答案 2 :(得分:5)

您可以使用单一比较,但通常比其价值更复杂。

if (i - (Integer.MIN_VALUE + 6) < Integer.MIN_VALUE + (10 - 6))

这使用下溢将所有值5及以下调整为大的正值。

您使用此功能的唯一原因是作为微观优化。

答案 3 :(得分:4)

我担心此时Java中不支持链式不等式。检查this帖子中的语言。

答案 4 :(得分:2)

范围

比较无法在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)){

答案 5 :(得分:1)

a&lt; x&lt; b相当于(x-a)(x-b)<0,或者如果x是一个你只想计算一次的表达式,

(x - (a + b)/ 2)^ 2&lt; (b-a)^ 2/4

同样处理两个非严格的平等。我不认为有办法处理一个严格和一个非严格的相等,但是(除非x是一个整数)。