这些方法有什么用?

What are these methods for?

我正在做作业(复合类关于计算两点之间的距离。我有类(线,点和主线)。我必须使用我老师设计的方法UML。但是,我发现我可以在不执行某些方法的情况下计算距离。我只是想知道是否有人知道它们的用途。

我相信它们是用来计算和returnP点的距离的。但是P点只有1个点,怎么计算呢?或者也许点 P 取我的第二个构造函数和复制构造函数的值并形成一个计算?谢谢大家的帮助。

下面是我的代码:

Class Point

class Point

{
private int x;
private int y;

//default constructor
public Point()
{
    //do nothing
}
// second constructor
public Point(int x, int y)
{
    this.x=x;
    this.y=y;
}


// Copy constructor 
public Point (Point p)
{
    this (p.x,p.y);
}

private double distance(Point p)
{
    // how can i calculate distance with just a single point?
}

public double getDistance(Point p)
{
    // how can i return distance with just a single point?
}
    // getter
public int getX()
{
return x;
}
public int getY()
{
return y;
}
    /setter
public void set(int x, int y)
{
this.x = x;
this.y = y;
}

我的主要方法将生成随机整数并实例化一个具有以下结果的对象:

Point 1 (43, -90)
Point 2 (-70, -34)
Distance (126.1150)

how can i calculate distance with just a single point?

只有一个 Point 是做不到的。但是您不只有一个 Point,您有两个 Point。一个是当前对象,一个是传递给方法的对象。

不是给你做功课,只是为了消除困惑,这样你就可以继续了……

public double getDistance(Point p)
{
    // Here you would calculate and return the distance between "this" and "p".
    // So your values are:
    //   this.getX()
    //   this.getY()
    //   p.getX()
    //   p.getY()
}

不确定 "get Distance" 和 "Distance" 之间有什么区别,但根据我的理解,您需要计算当前点 (this.x, this.y) 和另一点(您通过函数发送的那个)。

所以:

private double distance(Point p)
{
    // how can i calculate distance with just a single point?

    var dX = this.x- p.x ;
    var dY  = this.y- p.y ;

    return  ( Math.sqrt( dX * dX + dY * dY   ) );


}
private double distance(Point p)
{
    // how can i calculate distance with just a single point?
}

如何执行这个方法?在 main 方法的某处您将创建 class 点的对象并执行该方法并传递另一个对象。

Point pointA = new Point (1,1);
Point pointB = new Point (3,3);
double distance = pointA.distance(pointB);

现在我们有了 Object 并且传递了另一个 Object。

private double distance(Point p)
{
    int distanceX = this.x - p.x;
    int distanceY = this.y - p.y;
    double result = //TODO some formula
    return result;

}