我有无法找到的错误,我有接收其他点的方法的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;
}
}
}
答案 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
相同)既不高于也不高于彼此。因此,您需要完全独立的代码isAbove
和isUnder
:
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))
在这里检查它是否不在上面,因此它可以低于或等于