有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java给定两个变量,测试它们之间是否有其他变量

我想测试一个变量是否介于两个其他变量之间,如果不清楚,请查看我的代码。这段代码是有效的,我只是在寻找一种更短、更高效的方法来执行同样的事情

public boolean isBetween(double test, double n1, double n2){
        double lowN = n1 < n2 ? n1 : n2;
        double highN = n1 > n2 ? n1 : n2;
        if(n1 == n2 && test == n1){
            return true;
        }
        if(test >= lowN && test <= highN){
            return true;
        }
        return false;
    }

目前,我使用两个三元运算符来定义哪个变量较低,哪个变量较高,然后查看测试变量是否在它们之间


共 (3) 个答案

  1. # 1 楼答案

    替代解决方案:

    public boolean isBetween(double test, double n1, double n2) {
        return n1 > test ? n2 > test && n2 < n1 : n2 > n1 && n2 < test;
    }
    

    也就是说,我实际上更喜欢另一种更个人化、更具可读性的解决方案;指数学的运用。min()和数学。最大值()

  2. # 2 楼答案

    这部分甚至不需要。如果没有它,它也应该工作

        if(n1 == n2 && test == n1){
            return true;
        }
    

    也使用数学。min()和数学。max()本质上提供了与代码相同的效率。如果您想使代码简短或看起来更可读,可以使用它们

  3. # 3 楼答案

    您可以使用^{}^{}

    private static boolean isBetween(double test, double d1, double d2) {
        return test >= Math.min(d1, d2) && test <= Math.max(d1, d2);
    }