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

Java中MyPoint类如何传递对象参数实现两点距离计算

解决MyPoint类中distance方法的参数问题

嘿,我看到你在实现MyPoint类的distance方法时,不知道怎么正确传入MyPoint对象作为参数,这其实是个很常见的小问题,咱们一步步来解决它:

问题分析

你写的第一个distance方法里,参数只写了myPoint,但Java要求必须声明参数的类型,而且注意Java是大小写敏感的,类名MyPoint首字母要大写,不能写成小写的myPoint。另外,虽然同一个类的对象可以直接访问彼此的私有字段,但从封装性角度考虑,更推荐给私有字段添加getter方法,这样代码更健壮。

修正后的完整代码

import java.util.Scanner;
import java.awt.geom.Point2D;

public class MyPoint {
    private double x1, y1;

    // 无参构造器
    public MyPoint() {
        x1 = 0;
        y1 = 0;
    }

    // 带参构造器
    public MyPoint(double x1, double y1) {
        this.x1 = x1;
        this.y1 = y1;
    }

    // 新增getter方法,符合封装原则
    public double getX1() {
        return x1;
    }

    public double getY1() {
        return y1;
    }

    // 接收MyPoint对象的distance方法
    public double distance(MyPoint otherPoint) {
        // 直接复用已有的distance(double x2, double y2)方法,避免重复代码
        return this.distance(otherPoint.getX1(), otherPoint.getY1());
    }

    // 接收坐标的distance方法(你原来的代码,保留不变)
    public double distance(double x2, double y2) {
        double distance = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
        return distance;
    }
}

关键修改点说明

  • 参数类型声明:把distance(myPoint)改成distance(MyPoint otherPoint),明确参数类型是MyPoint,同时给参数起一个有意义的名字(比如otherPoint,表示另一个点)。
  • 代码复用:在接收MyPoint对象的distance方法里,直接调用已经实现好的接收坐标的distance方法,这样不用重复写平方根计算的逻辑,减少冗余。
  • 封装优化:添加了getX1()和getY1()两个getter方法,用来获取私有字段的值,避免直接访问私有成员,让代码更符合面向对象的封装思想。

测试示例

如果你想测试这个方法,可以这样写:

public class TestMyPoint {
    public static void main(String[] args) {
        MyPoint point1 = new MyPoint(0, 0);
        MyPoint point2 = new MyPoint(3, 4);
        // 调用接收MyPoint对象的distance方法
        double dist = point1.distance(point2);
        System.out.println("两点之间的距离是:" + dist); // 输出5.0
    }
}

内容的提问来源于stack exchange,提问作者killuabusher

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 15:23:11