我在尋找下面發佈的代碼的幫助。這是一個問題,我必須製作一個球體課程和另一個課程來測試它。我幾乎瞭解了一切,但唯一讓我難過的是設置一個新的直徑並獲得新的音量。當我設置一個新的直徑時,直徑容易改變,但是當我嘗試再次運行音量時,它只使用舊的直徑而不是新的直徑。請幫助謝謝你!Java初學者:Sphere類
public class Sphere {
private double sphDiam, volume, surfArea;
private final double VOL_RELAY = 4.0/3.0;
private final int SURF_CONST = 4;
public Sphere(double sphDiam) {
this.sphDiam = sphDiam;
setVolume();
setSurfaceArea();
}
public double getDiam() {
return sphDiam;
}
public void setDiam(double sphDiam) {
this.sphDiam = sphDiam;
}
public double getVolume() {
return volume;
}
public void setVolume() {
volume = Math.pow(sphDiam/2, 3) * Math.PI * VOL_RELAY;
}
public double getSurfaceArea() {
return surfArea;
}
public void setSurfaceArea() {
surfArea = Math.pow(sphDiam/2, 2) * Math.PI * SURF_CONST;
}
public String toString() {
return "Sphere diameter: " + sphDiam + "\nSphere Volume: " + volume + "\nSphere Surface Area: " + surfArea;
}
}
public class MultiSphere {
public static void main(String[] args) {
Sphere sph1 = new Sphere(10.5);
Sphere sph2 = new Sphere(8.4);
Sphere sph3 = new Sphere(20.1);
sph1.setDiam(3.2);
System.out.println(sph1.getDiam());
System.out.println(sph1.getVolume());
System.out.println(sph1.getSurfaceArea());
System.out.println(sph1);
System.out.println();
sph1.setDiam(2.5);
System.out.println(sph1.getDiam());
System.out.println(sph1.getVolume());
System.out.println(sph1.getSurfaceArea());
System.out.println(sph1);
System.out.println();
System.out.println(sph2.getDiam());
System.out.println(sph2.getVolume());
System.out.println(sph2.getSurfaceArea());
System.out.println(sph2);
System.out.println();
System.out.println(sph3.getDiam());
System.out.println(sph3.getVolume());
System.out.println(sph3.getSurfaceArea());
System.out.println(sph3);
System.out.println();
}
}
您正在調用'setVolume()'來計算音量並設置它。但是除了構造函數之外,你永遠不會調用這個方法。設置新直徑後,必須再次調用該方法。另外我會建議只是擺脫'setVolume()'和'setSurfaceArea()'方法,並在你的getter方法中進行計算。 –