簡體   English   中英

代碼打印意外結果

[英]Code printing unexpected results

由於某些原因,水星和金星在權重字段中會打印Infinity。 誰能看到這個問題? 這段代碼對你們有用嗎? 所有其他行星似乎工作正常。 提前致謝!

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]);
        }

    }
}

循環之前必須設置引力[2],否則除以0直到地球。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM