1

我最近收到一所大学的问题,我正在学习建立一个名为point.

其中一个类方法具有isAbove()比较 2 个 Y 轴点的功能。较高的 y 轴值将“高于”另一点。

我已经构建了以下功能

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

但在另一个功能下,他们要求仅使用该isAbove功能。

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

但是当 y 轴值相等时会发生什么?它也将返回“真”。这是不对的。所以你认为他们打算做什么?

4

3 回答 3

1

大学希望你提出

public boolean isUnder(Point other) {
 return other.isAbove(this);
}

因为当另一个点在这个点之上时,这个点就在另一个点之下。

于 2013-11-13T09:06:54.473 回答
1

您可以isAbove用来实现一个isLevel方法(我承认这不是最好的名称,但意思是两个点具有相同的 y 轴值):

public boolean isLevel(Point other) {
    return !isAbove(other) && !other.isAbove(this);
}

完成此操作后,实施isUnder变得容易:

public boolean isUnder(Point other) {
    return !(isAbove(other) || isLevel(other));
}

编辑:实际上,更简单的方法是当且仅当 B 高于 A 时才说 A 在 B 之下:

public boolean isUnder(Point other) {
    return other.isAbove(this);
}
于 2013-11-13T09:02:27.603 回答
0

我的建议

boolen如果场景的结果可能超过两个,您可以看到您不能用作返回类型。所以你可以返回Stringaboveundersame hight

于 2013-11-13T09:06:00.700 回答