谁能帮我讲解下这个小程序里边的形式参数问题吗?
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??谁能帮我详细讲解一下吗?
----------------解决方案--------------------------------------------------------
还有啊,这段代码为什么会出错呢?
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型的不能为其他
----------------解决方案--------------------------------------------------------