是否有不同的方法来检查某个值是否介于此方式之外的某个范围之间?

时间:2016-09-19 23:00:18

标签: java logical-operators

例如,我想检查一个值是否大于或等于x,但小于或等于y。

我认为我只需要使用逻辑“和”运算符,如下所示:

if(value >= x && value <= y) {
   do something
}

它有效,但我很想知道是否有其他方法可以达到相同的效果。

4 个答案:

答案 0 :(得分:2)

还有其他方法,正如其他答案所示 - 但你的方式完全是规范的。

是:

  • 明确
  • 不需要外部参考或熟悉外部API
  • 尽可能高效 - 而且显然高效,在某种意义上我不必猜测内联和其他Hotspot魔法,并且没有条件来制作我的railway run badly
  • 对开放/封闭范围没有混淆:我可以看到它是一个包罗万象的范围,如果你想改变它,它就是一个变化的角色(想象一下用数学来计算它) .min / max version!)

很美。不要改变它。

答案 1 :(得分:1)

您可以使用Guava的Range

if (Range.closed(x, y).contains(value))

int s(特别是考虑自动装箱)确实没有意义,但它对其他Comparable值很有用。

答案 2 :(得分:0)

另一种方法是使用Java.lang.Math库。

Math.max(Math.min(value, max), min) == value

答案 3 :(得分:0)

考虑为这些事情创建自己的静态实用程序类。

public final class IntUtil
{
    // ...

    public static boolean isBetween(int value, int min,int max)
    {
        return value >= min && value <= max;
    }

    // ...
}