爱学习的伟伟 2015-08-25 11:25 采纳率: 12.5%
浏览 1834

x和p.x; y和p.y;z和p.z总是分不清分别指代的是什么

class Point{
public int x;
public int y;
public int z;

public Point(int x, int y, int z) {
    this.x = x;
    this.y = y;
    this.z = z;
}

public void setX(int x) {
    this.x = x;
}

public void setY(int y) {
    this.y = y;
}

public void setZ(int z) {
    this.z = z;
}

public int getDistance(Point p) {
    return (x - p.x)*(x - p.x) + (y - p.y)*(y - p.y) + (z - p.z)*(z - p.z);
}

}

public class TestPoint {
public static void main(String [] args) {
Point p = new Point(1, 2, 3);
Point p1 = new Point(0, 0, 0);
System.out.println(p.getDistance(p1));

    p.setX(5);

    System.out.println(p.getDistance(new Point(0, 0, 0)));

}

}

关于 public int getDistance(Point p) {
return (x - p.x)*(x - p.x) + (y - p.y)*(y - p.y) + (z - p.z)*(z - p.z);
}
中的x和p.x; y和p.y;z和p.z总是分不清分别指代的是什么。大神能给我答疑解惑下吗?

  • 写回答

3条回答 默认 最新

  • JonsonJiao 2015-08-25 15:29
    关注

    这个方法中

    public int getDistance(Point p) {
        return (x - p.x)*(x - p.x) + (y - p.y)*(y - p.y) + (z - p.z)*(z - p.z);
    }
    

    带p就不用解释了吧,就是p的x、y和z。
    而这个不带p的,是你使用的对象中参数。
    你自己写的测试代码太混乱了,System.out.println(p.getDistance(p1));这句与上面的代码很容易自己搞混了。起名字不要起这些容易混的,建议改成
    System.out.println(point1.getDistance(point2));之类的,这样就好解释了,在调用getDistance时,方法中的x就是调用方法的对象的,即point1的,而传入的参数为point2,也就是说方法中的p指代的是point2.

    评论

报告相同问题?

悬赏问题

  • ¥50 potsgresql15备份问题
  • ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
  • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上