当前位置: 代码迷 >> Java相关 >> 谁能帮我讲解下这个小程序里边的形式参数问题吗?
  详细解决方案

谁能帮我讲解下这个小程序里边的形式参数问题吗?

热度:73   发布时间:2011-10-29 17:13:18.0
谁能帮我讲解下这个小程序里边的形式参数问题吗?
class Point {
    double x, y, z;
   
    Point(double _x, double _y, double _z) {
        x = _x;
        y = _y;
        z = _z;
    }
   
    void setX(double _x) {
        x = _x;
    }
   
    double 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.0, 2.0, 3.0);
        Point p1 = new Point(0.0, 0.0, 0.0);
        System.out.println(p.getDistance(p1));
        
        p.setX(5.0);
        System.out.println(p.getDistance(new Point(1.0, 1.0, 1.0)));
    }
}


以上是程序的代码,问题在这里“double getDistance(Point p) ”,这里的形式参数为什么可以用Point p??谁能帮我详细讲解一下吗?
搜索更多相关的解决方案: public  double  return  class  

----------------解决方案--------------------------------------------------------
还有啊,这段代码为什么会出错呢?
class xyz {
    double x,y,z;
    xyz (double _x,double _y,double _z){
    x=_x;
    y=_y;
    z=_z;
    }
    double deal (double _x,double _y,double _z){
    return (_x*_x+_y*_y+_z*_z);
    }

}


public class point {
    public static void main(String[] args) {
        xyz point2 =new xyz(3,3,3);
        xyz point1 =new xyz(3,3,3);
        System.out.print(point2.deal(point1));
     }

}

----------------解决方案--------------------------------------------------------
没有明白你第一个问题的意思,“double getDistance(Point p) ”,这里的形式参数为什么可以用Point p,
为什么不可以用呢?你的疑问是什么?

问题二的错误很明显在你的xyz 这个类中方法double deal (double _x,double _y,double _z)的参数并不是一个xyz的类型,而是三个double类型的数字。

----------------解决方案--------------------------------------------------------
第一个问题等于白问,形参可以是任何类型的,没有为什么的。第二个问题如楼上说的,你传入的对象的类型错了,应该传入三个double类型的
----------------解决方案--------------------------------------------------------
问题二里deal方法的形参是三个double型的,实参必须是单个double型的不能为其他
----------------解决方案--------------------------------------------------------