请问: if(radius>0&&height>0) return area()*height;这句话的意思是不是求体积?那么:if(radius>0&&height>0) return 2*Math.PI*radius*radius+2*Math.PI*radius*height; 当(radius>0&&height>0)的时候,area()*height还是体积吗?我应该没有错吧~~~
调试欢乐多
1、很不OO,你既然定义了一个叫做Shape的类,理解上应该是一个基类。像你怎么用
public class circle extends Object
{ private String name;
private shape p;
......
}
表示什么了?圆“有”一个类型!而不是圆“是”一个类型。2、为什么会是0,这个看看你的Shape的构造器
public shape(double radius,double height)
{
radius=getradius();
height=getheight();
area=area();
volumn=volumn();
}
也没有调用什么缺省构造,那些getradius()、getheight()会给你的成员赋值?
再说了你的构造参数传进来干吗呢?反正也不用!3、为了获得结果可以这样:
public shape(double radius,double height)
{
this.radius = radius;
this.height = height;
area=area(); //
volumn=volumn(); //
}
area和volumn作为成员确实可以但是靠构造计算出来总觉得不爽!4、你的程序很不健壮,看看计算体积的方法:
public double volumn()
{ if(radius==0&&height==0)
return 0;
if(radius>0&&height==0)
return 0;
if(radius>0&&height>0)
return area()*height;
return volumn();
}
很容易递归的哦,比如我构建了一个radius = -1, height=any的形状,你的程序就死定了!
面积和体积都会递归而死!
建议重写!对IF判断改用SWITCH比较好看!