Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 代码打印意外结果_Java_Math_Printing_Gravity - Fatal编程技术网

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非常感谢你!