2

他のすべてのメソッドが正しく機能しているのに、coneVolumeメソッドがゼロを返す理由がわからないようです。

import java.util.Scanner;

public class P56old{
public static double sphereVolume(double r){
    double sphereVolume = (4/3)*(Math.PI)*(Math.pow(r, 3));
    return sphereVolume;
}
public static double sphereSurface(double r){
    double sphereSurface = 4 * (Math.PI) * Math.pow(r, 2);
    return sphereSurface;
}
public static double cylinderVolume(double r, double h){
    double cylinderVolume = (Math.PI) * (Math.pow(r, 2)) * h;
    return cylinderVolume;
}
public static double cylinderSurface(double r, double h){
    double cylinderSurface = 2 * (Math.PI) * (Math.pow(r, 2)) + 2 * Math.PI * r * h;
    return cylinderSurface;
}
public static double coneVolume(double r, double h){
    double coneVolume = (1/3) * Math.PI * (Math.pow(r,2)) * h;
    return coneVolume;
}
public static double coneSurface(double r, double h){
    double s = Math.sqrt(Math.pow(r,2) + Math.pow(h, 2));
    double coneSurface = Math.PI * Math.pow(r,2) + Math.PI * r * s;
    return coneSurface;
}
public static void main(String[] args){
    Scanner in = new Scanner(System.in);
    System.out.print("Please give the radius: ");
    double r = in.nextDouble();
    System.out.print("Please give the height: ");
    double h = in.nextDouble();

    double coneVolume = coneVolume(r,h);
    double sphereVolume = sphereVolume(r);
    double sphereSurface = sphereSurface(r);
    double cylinderVolume = cylinderVolume(r,h);
    double cylinderSurface = cylinderSurface(r,h);
    double coneSurface = coneSurface(r,h);

    System.out.println("The Sphere Volume is " + sphereVolume);
    System.out.println("The Sphere Surface is " + sphereSurface);
    System.out.println("The Cylinder volume is " + cylinderVolume);
    System.out.println("The Cylinder Surface is " + cylinderSurface);
    System.out.println("The Cone Volume is " + coneVolume);
    System.out.println("The Cone Surface is " + coneSurface);
}
}

この問題についての洞察と批評をいただければ幸いです。それはすべてのパブリッククラスに関係している可能性があり、別のメソッドがconeVolumeメソッドに影響を与えている可能性がありますが、当面の問題を修正するためのメソッドについては現時点では十分にわかりません。

4

1 に答える 1

4

1/3を実行すると、整数除算が実行され、結果は0になります(余りは1です)。0を掛けると0になります。代わりに1.0/3.0を実行すると、3分の1の近似値が正しく計算されます。

于 2013-02-22T16:44:53.570 に答える