有 Java 编程相关的问题?

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

java如何从布尔变量中获得两个以上的答案?

我需要创建一个名为Point的类,该对象将具有X和Y的参数。然后我必须创建一个方法来检查该点是否位于另一点之上,所以我这样做了:

public boolean isAbove(Point1 other) {
    if(other.getY() > _y) { return true; }
    return false;
}

我必须做的下一个方法叫做“isUnder”,但在这个方法中,我必须只使用我创建的“isAbove”方法。这是我创建的“isUnder”方法:

public boolean isUnder(Point1 other) {
    return !isAbove(other);
}

我怎么知道点是否不在同一“高度”?对于我创建的方法,我得到的唯一结果是TRUE,FALSE,但是如果点的“高度”相同,我应该在两种方法上都得到FALSE,FALSE


共 (4) 个答案

  1. # 1 楼答案

    显然,我找到了一篇7年前的帖子,上面有一个完全相同的问题,有人在那里解决了它

    return other.isAbove(this);
    

    非常感谢大家

  2. # 2 楼答案

    您可以这样做:

    public int compareTo(Point otherPoint) {
        return Integer.compare(_y, otherPoint.getY());
    }
    

    如果x小于y,Integer.compare(x, y)返回-1,如果它们相等,则返回0,否则返回1

  3. # 3 楼答案

    class Point {
        private double x;
        private double y;
    
        public PointYPosition getYPosition(Point otherPoint) {
            if (otherPoint.y > y) return PointYPosition.ABOVE;
            if (otherPoint.y < y) return PointYPosition.UNDER;
    
            return PointYPosition.EQUALS;
        }
    }
    
    enum PointYPosition {
        ABOVE,
        UNDER,
        EQUALS
    }
    
  4. # 4 楼答案

    您可以使用以下实现,但是我必须说,如果您只需要使用另一种方法,那么没有办法

    public boolean isUnder(Point1 other) {
        return !isAbove(other) && other.getY() != _y;
    }
    

    这样,您甚至可以使用第三种方法isEqual

    public boolean isEqual(Point1 other) {
        return !isAbove(other) && !isUnder(other);
    }
    

    这里说的就是我自己将如何实现这一点

    public boolean isAbove(Point1 other) {
        return other.getY() < _y;
    }
    
    public boolean isUnder(Point1 other) {
        return other.getY() > _y;
    }
    
    public boolean isOnTheSameHeight(Point1 other) {
        return !isAbove(other) && !isUnder(other);
    }
    
    public boolean isAboveOrOnTheSameHeight(Point1 other) {
        return isAbove(other) || isOnTheSameHeight(other);
    }
    
    // etc.