1

我正在为java编程做作业。我被要求编写一个返回两点之间距离的方法。我应该使用给定的公式distance = square root((x2 - x1)*(x2 - x1) +(y2 - y1)*(y2 - y1))

在下面的代码中,一个对象a将包含当前坐标 x1 和 y1,并且b将是坐标 x2 和 y2,传递到某个位置移动。

在没有其他类和其他元素(例如 x2、y2)的情况下,如何在此类中编写方法?在对象中有两个值,但是如何将每个值分配给 x1 和 x2,以及 y1 和 y2?我找到了 java 的向量定义,但我不确定它是否适用于此。有人有想法吗?

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 方法应该只接受一个参数,一个 MyPoint 对象,而不是两个参数:

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

比较的第一个对象将是当前对象,即正在调用其方法的对象。

然后在方法体中,将当前对象的字段this.xthis.y与传入方法参数的对象的 x 和 y 值进行比较,other.xother.y

此外,该方法可能应该返回一个 double,而不是您定义的 int。

关于,

在没有其他类和其他元素(例如 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 回答