一个数组中的单个值没有用函数正确解析
问题描述:
我一直在这方面工作很长时间,对于我的生活,我无法弄清楚为什么天王星的surfGrav值会被输出为这样数量可观。基本上,该程序基于行星质量和半径生成表面引力。这只是天王星的价值;一切都很好。我已经加倍与谷歌的价值检查,但无济于事。 此外,这是为我的计算机科学课程,所以我不能只是修改utput是我想要的,我必须解决我已经有的。 木星的价值应该远远低于木星的价值。 感谢您的帮助!一个数组中的单个值没有用函数正确解析
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
public class GravityV1
{
public static String[] planets = {"Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune"};
public static int[] radii = {2439000, 6052000, 6378000, 3397000, 71492000, 60268000, 2559000, 24764000};
public static double[] mass = {3.30E+23, 4.87E+24, 5.98E+24, 6.42E+23, 1.90E+27, 5.69E+26, 8.68E+25, 1.02E+26};
public static double constantGrav = 6.67E-11;
public static double a;
//constructors
private static PrintWriter outFile;
//main method
public static void main (String[] args) throws FileNotFoundException
{
outFile = new PrintWriter(new File("gravity1.txt"));
System.out.println(" Planetary Data ");
System.out.println("Planet Diameter(km) Mass(kg) g (m/s^2) ");
System.out.println("-----------------------------------------------------------------");
for(int i = 0; i < planets.length; i++){
double surfGrav = surfGrav(i);
System.out.printf("%8s%15d%20.2e%16.4f%n", planets[i], (2 *radii[i]), mass[i], surfGrav);
txtGrav(i);
}
outFile.close();
}
//this method requires the planet as input. Then it will output and calculate the surface gravity
public static double surfGrav (int planet)
{
return (constantGrav * mass[planet])/(Math.pow(radii[planet], 2));
}
//print output to text file too
public static void txtGrav (int arrayInput) throws FileNotFoundException
{
a = (surfGrav(arrayInput));
if (arrayInput == 2) {
a = Math.round(a);
}
outFile.printf("%.2f%n", a);
}
}
Output:
g (m/s^2)
3.7001
8.8686
9.8052
3.7108
24.7950
10.4488
884.1073 <--- what
11.0939
答
我想你错过了天王星的半径一个0
:25590000
。 (尽管这个值与我在Internet上可以找到的有些不同)。
我甚至无法开始证明我的数学中这个愚蠢的错误。感谢一群人指出了这一点。我真的需要睡觉... – LordValkyrie 2014-09-26 01:53:02