1

Javaプログラミングの宿題をしています。2 点間の距離を返すメソッドを作成するように求められました。与えられた式を使用する必要がありますdistance = square root((x2 - x1)*(x2 - x1) +(y2 - y1)*(y2 - y1))

以下のコードでは、オブジェクトaは現在の座標 x1 と y1 に含まれb、座標 x2 と y2 になり、どこかで移動するために渡されます。

x2、y2などの他のクラスや他の要素を持たずに、このクラスにメソッドを書くにはどうすればよいですか? オブジェクトには 2 つの値がありますが、それぞれを x1 と x2、y1 と y2 に割り当てるにはどうすればよいですか? java の vector の定義を見つけましたが、これに適用できるかどうかはわかりません。誰かアイデアがありますか?

public class MyPoint{
    private int x;
    private int y;
}

public MyPoint(int x, int y){
        this.x = x;
        this.y = y;
} 

public int distanceTo(MyPoint a, MyPoint b){
    MyPoint.x1 = a;
    MyPoint.y1 = a;
    MyPoint.x2 = b;
    MyPoint.y2 = b;
    double distance = Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1));
    return distance;
}
}
4

3 に答える 3

3

distanceTo メソッドは、2 つのパラメーターではなく、1 つのパラメーター (MyPoint オブジェクト) のみを取る必要があります。

public double distanceTo(MyPoint other) {
  // ...
}

比較の最初のオブジェクトは、メソッドが呼び出されている現在のオブジェクトになります。

次に、メソッド本体で、現在のオブジェクトのフィールドthis.xthis.yを、メソッドのパラメーターに渡されたオブジェクトの x 値と y 値とother.x比較しますother.y

また、メソッドはおそらく、定義した int ではなく double を返す必要があります。

それにかんする、

x2、y2などの他のクラスや他の要素を持たずに、このクラスにメソッドを書くにはどうすればよいですか?

これが何を意味するのか正確にはわかりません。

于 2013-06-25T21:51:43.793 に答える
1

MyPoint.x1 = a を宣言する必要はありません。それは本当に何もしていません。代わりに、a.xやなどのポイントを参照できますb.y

さらに、戻り値の型が目的のものであることを確認する必要があります。

編集: ホバークラフトは基本的に私と同じことを言っていますが、少しいいです。

于 2013-06-25T21:58:36.617 に答える
0
public class Point
{
    int x,y;

    public Point(int x, int y)
    {
        this.x = x;
        this.y = y;
    }
    public static double distance(Point a, Point b)
    {
        return Math.sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
    }
    public static void main(String[] args)
    {
        Point a = new Point(0,0);
        Point b = new Point(3,5);
        System.out.println(distance(a,b));
    }
}
于 2013-06-25T21:56:53.983 に答える