使用java计算体积和表面积

问题描述:

我正在为我的Java I类开发一个项目。我已经包含了我编写的程序。我的公式似乎正在工作,但我的输出不是。这是项目 - “写一个名为Sphere的类,其中包含表示球体直径的实例数据。定义球体构造函数以接受并初始化直径,并包括直径的getter和setter方法。包含计算并返回体积和曲面的方法。包含一个toString方法,该方法返回球体的单行描述。创建一个名为Multisphere一个驱动程序类,其主要方法instantites并更新几个球对象“ 这里是我写:使用java计算体积和表面积

public class Sphere 
{ 

    private double diameter; 
    private double calcVol; 
    private double calcSA; 


    //---------------------------------------------------------------------------------------------- 
    //Constructor 
    //---------------------------------------------------------------------------------------------- 

    public Sphere(double diameter) 
    { 
    this.diameter = diameter; 
    } 
    public void setDiameter(double diameter) 
    { 
    this.diameter = diameter; 
    } 
    public double getDiameter(double diameter) 
    { 
    return diameter; 
    } 
    public double calcVol() 
    { 
    return ((Math.PI) * (Math.pow(diameter, 3.0)/6.0)); 
    } 
    public double calcSA() 
    { 
    return ((Math.PI) * Math.pow(diameter, 2.0)); 
    } 
    public String toString() 
    { 
    return "Diameter: " + diameter + " Volume: " + calcVol + " Surface Area: " + calcSA; 
    } 
} 

public class MultiSphere 
{ 

    public static void main(String[] args) 
    { 


    Sphere sphere1 = new Sphere(6.0); 
    Sphere sphere2 = new Sphere(7.0); 
    Sphere sphere3 = new Sphere(8.0);d 



    sphere1.calcVol(); 
    sphere2.calcVol(); 
    sphere3.calcVol(); 

    sphere1.calcSA(); 
    sphere2.calcSA(); 
    sphere3.calcSA(); 

    System.out.println(sphere1.toString()); 

    System.out.println(sphere2.toString()); 

    System.out.println(sphere3.toString()); 
    } 
} 
+0

提示:你不应该有'calcVol '和'calcSA'变量。改为调用方法。而您对这些方法的单独调用将不起作用,因为返回值不会在任何地方发生。 – RealSkeptic

private double calcVol; 
private double calcSA; 

这些是您应该删除的行,您声明了与您也有的方法具有相同名称的新字段。

toString你应该打电话给你的方法是这样

return "Diameter: " + diameter + " Volume: " + calcVol() + " Surface Area: " + calcSA(); 

也在你main()您有这行的末尾一个额外d

Sphere sphere3 = new Sphere(8.0);d 

包括计算并传回体积和表面是球面的方法。

这是你家庭作业中重要的一行。没有提及球体的体积和表面积的内部状态,所以为此保留字段值是没有意义的。你的方法是正确的,但你的toString应该只是调用这些方法:

public String toString() 
{ 
    return "Diameter: " + diameter + " Volume: " + calcVol() + " Surface Area: " + calcSA(); 

} 

这样,你不需要先调用方法和你toString将永远代表最新的表面积和体积,应直径变化。