1

最近、 という名前のクラスを作成するために勉強している大学から質問を受けましたpoint

クラス メソッドの 1 つに、isAbove()Y 軸の 2 点を比較する関数があります。y 軸の値が高いほど、他の点よりも「上」になります。

私は次の関数を構築しました

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

しかし、他の関数はisUnderであり、isAbove関数のみを使用するように求めています。

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

しかし、y 軸の値が等しくなるとどうなるでしょうか。また、「true」を返します。これは正しくありません。それで、彼らは何をするつもりだったと思いますか?

4

3 に答える 3

1

大学はあなたに考えてもらいたい

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

もう一方の点がこの点の上にあるとき、この点はもう一方の点の下にあります。

于 2013-11-13T09:06:54.473 に答える
1

isAboveメソッドを実装するために使用できますisLevel(これは最適な名前ではないことは認めますが、意味は 2 つの点が同じ y 軸の値を持つことです)。

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

これを行うと、実装isUnderが簡単になります。

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

EDIT : 実際には、B が A の上にある場合にのみ、A が B の下にあると言うのがさらに簡単な方法です。

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

私のおすすめ

boolenシナリオの結果が 2 つを超える可能性がある場合、戻り値の型として使用できないことがわかります。したがって、またはStringと言って返すことができます。aboveundersame hight

于 2013-11-13T09:06:00.700 に答える