Java 代码打印意外结果
由于某种原因,水星和金星在重量场上打印出无穷大。有人看到问题了吗?这个代码对你们有用吗?所有其他行星似乎都运转良好。提前谢谢Java 代码打印意外结果,java,math,printing,gravity,Java,Math,Printing,Gravity,由于某种原因,水星和金星在重量场上打印出无穷大。有人看到问题了吗?这个代码对你们有用吗?所有其他行星似乎都运转良好。提前谢谢 import java.util.Scanner; public class Weight { static double getGravity(String name) throws IOException { String[] names = {"Mercury", "Venus", "Earth", "Mars", "Jupit
import java.util.Scanner;
public class Weight
{
static double getGravity(String name) throws IOException
{
String[] names = {"Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune", "Pluto"};
double[] radii = {2439.7, 6051.9, 6378, 3402.5, 71492, 60270, 25562, 24774, 1195};
double[] masses = {3.3022 * Math.pow(10,23), 4.8685 * Math.pow(10,24), 5.9736 * Math.pow(10,24), 6.4185 * Math.pow(10,23), 1.8986 * Math.pow(10,27), 5.6846 * Math.pow(10,26), 8.6810 * Math.pow(10,25), 1.0243 * Math.pow(10,26), 1.312 * Math.pow(10,22)};
int i = java.util.Arrays.asList(names).indexOf(name);
return 6.67 * Math.pow(10, -11) * masses[i] / Math.pow(radii[i]*1000, 2);
}
static double convertWeight(double originalWeight, double currentGravity, double newGravity)
{
return originalWeight * (newGravity / currentGravity);
}
static void printResults(String name, double gravity, double weight)
{
System.out.printf("%-10s %-8.1f %-8.1f\r\n", name, gravity, weight);
}
public static void main(String[] args) throws IOException
{
Scanner in;
System.out.print("Enter your weight in lbs: ");
in = new Scanner(System.in);
double earthWeight = in.nextDouble();
String[] names = {"Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune", "Pluto"};
//PLUTO IS NOT A PLANET!
double[] gravity = new double[names.length];
double[] weight = new double[names.length];
System.out.printf("%-10s %-8s %-8s\r\n============================================\r\n", "Planet", "Gravity", "Weight (lbs) ");
for(int i=0; i<gravity.length; i++)
{
gravity[i] = getGravity(names[i]);
weight[i] = convertWeight(earthWeight, gravity[2], gravity[i]);
printResults(names[i], gravity[i], weight[i]);
}
}
}
import java.util.Scanner;
公共类权重
{
静态双getGravity(字符串名称)引发IOException
{
字符串[]名称={“水星”、“金星”、“地球”、“火星”、“木星”、“土星”、“天王星”、“海王星”、“冥王星”};
双[]半径={2439.7,6051.9,6378,3402.5,71492,60270,25562,24774,1195};
双[]质量={3.3022*数学功率(10,23),4.8685*数学功率(10,24),5.9736*数学功率(10,24),6.4185*数学功率(10,23),1.8986*数学功率(10,27),5.6846*数学功率(10,26),8.6810*数学功率(10,25),1.0243*数学功率(10,26),1.312*数学功率(10,22)};
inti=java.util.Arrays.asList(名称).indexOf(名称);
返回6.67*数学功率(10,-11)*质量[i]/数学功率(半径[i]*1000,2);
}
静态双重量(双原始重量、双当前重力、双新重力)
{
返回原始重量*(新重力/当前重力);
}
静态void打印结果(字符串名称、双重重力、双重重量)
{
System.out.printf(“%-10s%-8.1f%-8.1f\r\n”,名称、重力、重量);
}
公共静态void main(字符串[]args)引发IOException
{
扫描仪输入;
系统输出打印(“以磅为单位输入您的体重:”;
in=新扫描仪(System.in);
双倍重量=in.nextDouble();
字符串[]名称={“水星”、“金星”、“地球”、“火星”、“木星”、“土星”、“天王星”、“海王星”、“冥王星”};
//冥王星不是行星!
double[]重力=新的double[names.length];
double[]权重=新的double[names.length];
System.out.printf(“%-10s%-8s%-8s\r\n====================================================\r\n”,“行星”,“重力”,“重量(磅)”);
对于(int i=0;i重力[2]必须在循环之前设置,或者除以0直到地球。在分配给重力[2]
之前,您尝试读取重力[2](在迭代中发生,i
是2
).Java为它提供了默认值0
,用浮点除以0
得到INF
。附带建议:定义一个包含行星名称、半径和质量的行星类,或者至少将列表传递给get gravity方法,这样就不需要重复声明和初始化相同的信息@synchronizer我会的,但这是虚拟学校。我只是在做作业。@Kevin非常感谢你!