Java 两个坐标之间的距离
我试图得到坐标之间的距离,但由于某种原因,它似乎不起作用。如果有人能帮忙,我将不胜感激 输出: 从点a到点b的距离为0.0。到a点的距离 到b点为0.0。从点a到点b的距离为0.0。这个 从点a到点b的距离为0.0。从p1到p2的距离为 4.242640687119285从p1到p3的距离为12.727922061357855Java 两个坐标之间的距离,java,distance,Java,Distance,我试图得到坐标之间的距离,但由于某种原因,它似乎不起作用。如果有人能帮忙,我将不胜感激 输出: 从点a到点b的距离为0.0。到a点的距离 到b点为0.0。从点a到点b的距离为0.0。这个 从点a到点b的距离为0.0。从p1到p2的距离为 4.242640687119285从p1到p3的距离为12.727922061357855 我看到的一件事是,当您运行main时,您在创建点之后调用Point.toString()方法四次。执行此操作时,距离变量尚未设置,因为尚未调用distanceTo方法 P
我看到的一件事是,当您运行main时,您在创建点之后调用Point.toString()方法四次。执行此操作时,距离变量尚未设置,因为尚未调用distanceTo方法
Point p0 = new Point();
Point p1 = new Point(0.0,0.0);
Point p2 = new Point(3.0,3.0);
Point p3 = new Point(9.0,9.0);
System.out.println(p0.toString());
System.out.println(p1.toString());
System.out.println(p2.toString());
System.out.println(p3.toString());
当这些Point.toString调用发生时,distanceTo方法没有被调用,因此这些点中的任何一个都没有设置距离
因为调用了distanceTo方法,所以在最后两行输出数字。这对您有用吗
public class Point {
private final double x;
private final double y;
public Point() {
x = 0.0;
y = 0.0;
}
public Point(double x, double y) {
this.x = x;
this.y = y;
}
public double distanceTo(Point other) {
double dx = other.x - this.x;
double dy = other.y - this.y;
double distance = Math.sqrt(dx * dx + dy * dy);
return distance;
}
public String toString() {
return x + "/" + y;
}
public static void main(String[] args) {
Point p0 = new Point();
Point p1 = new Point(0.0, 0.0);
Point p2 = new Point(3.0, 3.0);
Point p3 = new Point(9.0, 9.0);
System.out.println(p0.toString());
System.out.println(p1.toString());
System.out.println(p2.toString());
System.out.println(p3.toString());
System.out
.println("The distance from p1 to p2 is " + p1.distanceTo(p2));
System.out
.println("The distance from p1 to p3 is " + p1.distanceTo(p3));
}
}
我从您的类中删除了distance
变量,因为一个点和另一个点之间只能有一个距离;点本身没有距离
我还将distanceTo
:当您调用p1时。distanceTo(p2)
您将p2
的引用传递到p1
。p2现在在distance to
方法中被称为other
写this.x
只是写x
的一种更为冗长的方式。我想说明的是,这个x
变量属于distanceTo
方法的接收者(在本例中是p1
)
最后,我将更改为字符串
,以便它打印点的X和Y坐标。在Java实例中,诸如删除的距离之类的变量总是用0初始化。这就是为什么总是打印px.toString()
的原因
从点a到点b的距离为0.0
.我不知道问题在哪里,只是一个建议。对于distanceTo函数,参数只需1个点。第一点将是你“在”的那一点,即,这一点。第二点是参数,究竟是什么问题?考虑到输出方式,您得到的是您应该得到的值。从p1到p2的距离为4.24。p1到p3是12.727,这就是你得到的。正如Andrew_CS指出的那样,您的困惑可能是您在计算缓存的距离之前就输出了它。如果这个问题得到了回答,您应该接受一个答案,这样它就不会被标记为未解决。
public class Point {
private final double x;
private final double y;
public Point() {
x = 0.0;
y = 0.0;
}
public Point(double x, double y) {
this.x = x;
this.y = y;
}
public double distanceTo(Point other) {
double dx = other.x - this.x;
double dy = other.y - this.y;
double distance = Math.sqrt(dx * dx + dy * dy);
return distance;
}
public String toString() {
return x + "/" + y;
}
public static void main(String[] args) {
Point p0 = new Point();
Point p1 = new Point(0.0, 0.0);
Point p2 = new Point(3.0, 3.0);
Point p3 = new Point(9.0, 9.0);
System.out.println(p0.toString());
System.out.println(p1.toString());
System.out.println(p2.toString());
System.out.println(p3.toString());
System.out
.println("The distance from p1 to p2 is " + p1.distanceTo(p2));
System.out
.println("The distance from p1 to p3 is " + p1.distanceTo(p3));
}
}