为了使球体体积法起作用,我尝试了许多不同的计算方法。
我的Sphere类是从Circle扩展的,以从圆中获取面积,并实现了Shape3D接口,该接口允许我使用体积方法。
但是,我已经为我的方法尝试了所有这些不同的公式,没有任何东西可以使我准确地得到一个球体。 它总是彻底关闭。
最接近的那个是(4 * 22 * radius * radius * radius)/(3 * 7); 但它仍然关闭。
//return (4/3) * super.area() * radius;
//return (Double)((4*22*getRadius()*getRadius()*getRadius() )/(3*7));
//return (4*22*radius * radius * radius )/(3*7);
//return ( (4/3) * (Math.pow(getRadius(), 3) ) / (Math.PI) );
//return (getRadius() * getRadius() * getRadius() ) * (Math.PI) * (4/3);
//return ( super.area() * getRadius() ) * (4/3);
我将为我的Shape抽象类,Circle类和Sphere类以及Shape3D接口附加代码。
也许我忽略了一些显而易见的事情。 当我设置半径并获得它时,半径返回正常值。 因此,我不确定为什么其中每一个都完全关闭。
public class Main {
public static void main(String[] args) {
System.out.println(volume());
}
public static double volume() {
double vol;
double x = 4/3;
double y = Math.pow(30.0, 3);
double z = Math.PI;
vol = y * z * x;
return vol;
//return (4/3) * super.area() * radius;
//return (Double)((4*22*getRadius()*getRadius()*getRadius() )/(3*7));
//return (4*22*radius * radius * radius )/(3*7);
//return ( (4/3) * (Math.pow(getRadius(), 3) ) / (Math.PI) );
//return (getRadius() * getRadius() * getRadius() ) * (Math.PI) * (4/3);
//return ( super.area() * getRadius() ) * (4/3);
}// end sphere volume
}