2012-04-13 10 views
0

を比較する方法を定義しますisUnder。私はisUnder上でいくつかのことを試してみましたが、異なる結果を取得しているは、私はクラスのポイントを持っている別のポイントに

public boolean isAbove(Point other) 
{ 
    if (this._y <= other._y) 
    { 
     return false; 
    } 
    else 
    { 
     return true; 
    } 
} 

public boolean isUnder(Point other) 
{ 

} 

:だからこれは私が出ているものです

1. public boolean isAbove(Point other) 
2. public boolean isUnder(Point other) 

: iは2つの方法を定義する必要があります。これら2つの方法を書く正しい方法は何ですか?

**重要**

私はisUnder()isAbove()メソッドを使用する必要があります!

+0

なぜ「isAbove」は「同じ高さ以上」と定義されていますか?メソッド名は誤解を招きます。 'isAbove'メソッドを変更して、それが何をするのか、それはうまくいくはずです。 –

+0

あなたは私にそれを解決する最善の方法を示すことができますか? – falukky

+0

誰かが十分な答えを出しましたか? –

答えて

0

isUnderこの

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

isAboveのように実装することができますメソッドの数を変更し、実際には "isAtSameHeightOrAbove"を意味する "isAbove"

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

public boolean isUnder(Point other) 
{ 
    return this._y != other._y && !isAbove(other); 
} 
+0

私の指示は、isUnderを書くためにisAboveメソッドだけを使用する必要があると言う(宿題)、あなたの答えはOKだと思いますか? – falukky

+0

はい。私の答えは、ポイントが同じレベルにある場合には注意が必要です。ポイントが同じレベルにある場合、 'isUnder'と' isAbove'の両方でfalseを返します。 –

0

あなただけの2の可能性を扱っている場合は、isUnder = isAboveので、あなたがしなければならないすべては行うことです:!

return !isAbove(other) 

はしかし、2つの点が同じレベルであることを私には思えます。私は文脈を知らないと言っていたので、私は間違っているかもしれません。

+0

2点を同じレベルにすることができます – falukky

0

価値を得るためには、クラスのゲッターが必要です。次に、あなたの比較方法とそのメソッドを使用します。あなたができない場合

public boolean isUnder(Point other) 
    { 
     return (this._y > other.getY()); 
    } 
+0

私はgetX()とgetY()を持っていて、isUnderを実装する方法は? – falukky

+0

その後、その方法を使用する必要があります。 other._yはプライベート変数であるため、他の値を取得することはできません。私の投稿に記載されているようにgetY()を使用する必要があります。 isUnderを実装するのは、isAboveの反対であるため難しくありません。したがって、同じ実装を行いますが、<、またはif(isAbove(other)= false)を変更すると、isUnder()がtrueになっている必要があります。 Altho isAboveは、2つのポイントが現在実装されている値と同じである場合にfalseを返します –

+0

同じクラス内では、プライベート変数にアクセスできます。そこにゲッターを使う必要はありません。 –

0

することができ

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

public double getY() { 
return _y; 
    } 
public boolean isAbove(Point other) 
{ 
    if (getY() <= other.getY()) 
    { 
     return false; 
    } 
    else 
    { 
     return true; 
    } 
} 

}

+0

私の更新を見てください(isUnderでisAboveメソッドを使用する必要があります)、別のメソッドを追加できません(これは私の宿題です) – falukky

+0

タグ - 宿題 –

関連する問題