我似乎无法弄清楚为什么当我所有其他方法都正常工作时我的cubeVolume方法返回零。

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);
}
}


感谢您对此事的任何见解,也欢迎提出任何批评。我认为这可能与所有公共类有关,也许其他方法正在影响锥孔方法,但我现在对这些方法的了解还不足以解决当前的问题。

最佳答案

当您执行1/3时,它将进行整数除法,结果为0(余数为1)。乘以0将得出0。改为执行1.0 / 3.0,它将正确计算近似值的三分之一。

关于java - 锥体积法返回零,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15029059/

10-10 14:32