开始学习java,我有我想要解决的问题

时间:2012-04-01 19:45:20

标签: java comparison

我有无法找到的错误,我有接收其他点的方法的Class Point,如果我的点在另一个poing之下则返回true,否则返回false,我的问题是如果我的点x属性等于其他点xi仍然收到true,这是不正确的:

public class Point
{
    private double _x;
    private double _y;

    public Point(double x,double y)
    {
        _x = x;
        _y = y;
    }

    public boolean isAbove(Point other)
    {
        if (_x > other._x)
        {
            return true;
        }
        else 
        {
            return false;
        }
    }

    public boolean isUnder(Point other)
    {   
        if (isAbove(other))
        {
            return false;
        }
        else
        {
            return true;
        }
    }
}

3 个答案:

答案 0 :(得分:3)

试试:

public boolean isAbove(Point other)
{
    return (_x > other._x);
}

public boolean isUnder(Point other)
{   
    return (_x < other._x);
}

为什么你有一个错误:因为A < B的反面是A >= B,而不是A > B

答案 1 :(得分:1)

另一个点位于另一个点之下并不完全相同,而另一个点位于另一个点之上 - 因为同一级别的点(它们的x相同)既不高于也不高于彼此。因此,您需要完全独立的代码isAboveisUnder

public class Point
{
    private double _x;
    private double _y;

    public Point(double x,double y) {
        _x = x;
        _y = y;
    }

    public boolean isAbove(Point other) {
        return (_x > other._x);
    }

    public boolean isUnder(Point other) {
        return (_x < other._x);
    }
}

答案 2 :(得分:0)

if (isAbove(other))

在这里检查它是否不在上面,因此它可以低于或等于