方法将另一个对象作为参数

时间:2013-06-25 21:48:54

标签: java object parameters distance points

我正在为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的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;
}
}

3 个答案:

答案 0 :(得分:3)

distanceTo方法应该只接受一个参数,一个MyPoint对象,而不是两个参数:

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

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

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

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

关于,

  

如何在没有其他类和其他元素(如x2,y2)的情况下编写此类中的方法?

我不确定你到底是什么意思。

答案 1 :(得分:1)

您无需声明MyPoint.x1 = a。那不是真的在做什么。相反,您可以引用a.xb.y等点。

此外,您应该确保您的返回类型符合您的要求。

编辑:气垫船基本上和我说的一样,但更好一点。

答案 2 :(得分: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));
    }
}