编写一个程序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);
}
}
答案 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);