java程序小问题

[复制链接]
查看11 | 回复1 | 2011-7-3 09:36:58 | 显示全部楼层 |阅读模式
classPoint{
        doublex,y,z;
       
        Point(double_x,double_y,double_z){
                x=_x;
                y=_y;
                z=_z;
        }
       
        voidsetX(double_x){
                x=_x;
        }
       
        doublegetDistance(Pointp){
                return(x-p.x)*(x-p.x)(y-p.y)*(y-p.y)(z-p.z)*(z-p.z);
        }
       
}

publicclassTestPoint{
        publicstaticvoidmain(String[]args){
                Pointp=newPoint(1.0,2.0,3.0);
                Pointp1=newPoint(0.0,0.0,0.0);
                System.out.println(p.getDistance(p1));
               
                p.setX(5.0);
                System.out.println(p.getDistance(newPoint(1.0,1.0,1.0)));
        }
}


上面程序Pointp=newPoint(1.0,2.0,3.0);
                Pointp1=newPoint(0.0,0.0,0.0);
                System.out.println(p.getDistance(p1));中输出的那个方法(x-p.x)*(x-p.x)(y-p.y)*(y-p.y)(z-p.z)*(z-p.z);中x的值不是p1的0.0的原因是因为方法前有个p.么引用了里面的p的x值1.0么,假如我在这方法的定义前加了static去定义,相当于全部都可引用这个方法的时候,我还能怎么用那个P里的x,按照了定义不用加P.,引用的x不就是上一步用的0.0么,那我还可以怎么做。顺便帮忙解释一下doublegetDistance(Pointp){
                return(x-p.x)*(x-p.x)(y-p.y)*(y-p.y)(z-p.z)*(z-p.z);
        }
这个方法的内容吧,还是有点不理解
回复

使用道具 举报

千问 | 2011-7-3 09:36:58 | 显示全部楼层
嗯先解释下这段:
doublegetDistance(Pointp){
return(x-p.x)*(x-p.x)(y-p.y)*(y-p.y)(z-p.z)*(z-p.z);
}
程序会返回一个double类型的值,值的大小为(x-p.x)*(x-p.x)(y-p.y)*(y-p.y)(z-p.z)*(z-p.z)。
注意区分:在getInstance中,其中的x是指,哪个对象调用了这个getDistance方法,x就是那个对象的x变量的值,而p.x代表的是getDistance方法参数列表中传入的另一个对象p的变量x的值。
比如你在main函数中是用p.getInstance(p1)那么x的值就是Pointp的x为1.0,p.x的值就是Pointp1的x为0.0。
我猜想你会误会的是,getInstance方法中参数列表明明是Pointp,可是实际传入的p1,你要记得,在getInstance方法定义中传入的参数名字是什么是不影响实际传入的参数的,你可以改为任意的名字比如:
doublegetDistance(Pointpoint){
return(x-point.x)*(x-point.x)(y-point.y)*(y-point.y)(z-point.z)*(z-point.z);
}


好了,第二个问题,你的加static修饰方法的想法,如果方法成了static类型了,里面操作的变量必须也是static的,即所有的Point共享xy。显然是这样就无法达到计算不同的点之间的距离的二目的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行