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

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.

    评论

报告相同问题?