Java:计算扁球体的SA

时间:2015-10-04 22:28:54

标签: java math formula

  

编写一个程序Spheroid.java,它分别取参数a和c   作为命令行参数并计算扁球体的表面积。

他给了我们使用的公式但是当我用他的示例命令行参数运行它时,我得到了完全不同的东西。他的例子给出6和5,得到403.050。我做了我认为正确的事,得到了546.1380388013903。我还没试过绕它,我只是想看看我是否接近。

public class Spheroid {

    public static void main(String[] args){
        String a = args[0];
        String c = args[1];
        Double A = Double.parseDouble(a);
        Double C = Double.parseDouble(c);
        Double e;
        Double S;
        e = Math.sqrt(1-(Math.pow(C, 2)/Math.pow(A, 2)));
        S = (2 * Math.PI * Math.pow(A, 2)) + (Math.PI * ((Math.pow(C, 2)/ Math.pow(e, 2))) * (Math.log((1+e)/(1-e))));

        System.out.println(S);
    }
}

3 个答案:

答案 0 :(得分:0)

最后一行应该是

S = (2 * Math.PI * Math.pow(A, 2)) + (Math.PI * ((Math.pow(C, 2)/ e)) * (Math.log((1+e)/(1-e))));

您有c^2/e^2而不是c^2/e

答案 1 :(得分:0)

在您的代码中,您使用Math.pow(e,2))来计算SA。 然而,在实际的公式中,它只是'e'而不是e 2;

答案 2 :(得分:0)

公式未在Java中正确表示。在下面找到您的代码的一些更改:

public static void main(String[] args){
    String a = args[0]; //"6";
    String c = args[1];; //"5";
    double A = Double.parseDouble(a);
    double C = Double.parseDouble(c);
    double e = Math.sqrt(1-(Math.pow(C, 2)/Math.pow(A, 2)));
    double S = (2 * Math.PI * Math.pow(A, 2)) + (Math.PI * ((Math.pow(C, 2)/ e)) * (Math.log((1+e)/(1-e))));
    System.out.println(S);
}

输出是: 403.0500218861285

要将其四舍五入为3dp,您可以使用小数格式:

DecimalFormat newFormat = new DecimalFormat("#.###");
double threeDecimalPlaces =  Double.valueOf(newFormat.format(S));
System.out.println(threeDecimalPlaces);