Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 两个坐标之间的距离_Java_Distance - Fatal编程技术网

Java 两个坐标之间的距离

Java 两个坐标之间的距离,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

我试图得到坐标之间的距离,但由于某种原因,它似乎不起作用。如果有人能帮忙,我将不胜感激

输出:

从点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方法

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));
    }
}