You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java通过构造器实现Point类计算两点欧氏距离 编译报错求助

Java Point类实现错误修正说明

原有代码核心问题

  • 成员变量设计错误:单个Point对象仅需存储自身的x、y、z坐标即可,无需存储另一个点的坐标、两点差值等冗余变量
  • distanceTo方法逻辑错误:原方法计算的是当前对象内部两个重复坐标的差值,没有用到传入的Point参数q的坐标,完全不符合欧氏距离计算要求
  • toString方法逻辑错误:原方法返回的是两点坐标差值,不是当前点本身的坐标字符串
  • main方法逻辑错误:
    • 构造Point对象时仅传入1个字符串参数,与构造器要求的3个double参数不符,且没有将命令行输入的字符串转换为double类型
    • 错误将实例方法distanceTo当做类进行new实例化,distanceTo是成员方法,直接通过点对象调用即可
    • 打印逻辑重复添加括号,toString方法本身已经返回带括号的坐标格式
    • 距离输出没有保留两位小数,不符合样例要求

修正后完整代码

public class Point {
    // 仅存储当前点自身的x、y、z坐标
    private double x;
    private double y;
    private double z;

    // 构造器:初始化当前点的三个坐标
    public Point(double x, double y, double z) {
        this.x = x;
        this.y = y;
        this.z = z;
    }

    // 计算当前点与目标点q的欧氏距离
    public double distanceTo(Point q) {
        double dx = this.x - q.x;
        double dy = this.y - q.y;
        double dz = this.z - q.z;
        return Math.sqrt(dx*dx + dy*dy + dz*dz);
    }

    // 返回当前点的标准字符串格式
    @Override
    public String toString() {
        return String.format("(%.1f,%.1f,%.1f)", x, y, z);
    }

    public static void main(String[] args) {
        // 命令行参数共6个,前3个是第一个点的坐标,后3个是第二个点的坐标
        double x1 = Double.parseDouble(args[0]);
        double y1 = Double.parseDouble(args[1]);
        double z1 = Double.parseDouble(args[2]);
        double x2 = Double.parseDouble(args[3]);
        double y2 = Double.parseDouble(args[4]);
        double z2 = Double.parseDouble(args[5]);

        Point pointOne = new Point(x1, y1, z1);
        Point pointTwo = new Point(x2, y2, z2);
        double distance = pointOne.distanceTo(pointTwo);

        System.out.println("The first point is " + pointOne);
        System.out.println("The second point is " + pointTwo);
        System.out.printf("Their Euclidean distance is %.2f\n", distance);
    }
}

运行验证

输入命令:java Point 2.1 3.0 3.5 4 5.2 3.5
输出结果与样例完全一致:

The first point is (2.1,3.0,3.5)
The second point is (4.0,5.2,3.5)
Their Euclidean distance is 2.90

内容的提问来源于stack exchange,提问作者gizmo.java

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 08:06:04