1

プログラムの全体的な目的:太陽系の 9 つの惑星それぞれの表面重力 (g) を決定します。

(わかってる、わかってる... 冥王星は惑星じゃないけど、このプログラムにはある)。

問題: プログラムがチャートを作成し、表面重力を計算します。フォーマットを正しくするためのサポートが必要です。列に並べる必要があります。また、これを修正しようとしている過程で、私は何らかの形でプログラムを台無しにして、惑星の 1 つだけの計算された表面積を出力するようにしました。

import java.io.IOException;
import java.io.PrintWriter;
import java.io.File;

public class GravityV1
{   

   //print the data
   public static void printResults(String[] names, double[] diameter, double[] mass, int x);
   {
      System.out.printf("%-10s%21.1f%20.4e\n",names[x],diameter[x],mass[x]);          
   }

   //calculate the surface gravity
   public static double calcGravity(double[] m, double[] d)
   {
    double gravity = 0.0;

      for (int i= 0; i < 9; i++) {
        gravity = (((6.67E-11) * (m[i])) / (Math.pow(d[i] / 2, 2)));
      }

    return gravity;        
   }


   //main method
   public static void main (String [ ] args)
   {        
     double[] mass = { 3.30E23, 4.869E24, 5.972E24, 6.4219E23, 1.900E27, 5.68E26, 8.683E25, 1.0247E26, 1.27E22 };

     double[] diameter = { 4880000, 12103000.6, 12756000.3, 6794000, 142984000, 120536000, 51118000, 49532000, 2274000 };

     String[] names = { "Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune", "Pluto" };


     System.out.printf("%-7s%20s%20s%25s\n","Planet Name","Diameter","Mass(kg)", "g (m/s^2)");    System.out.println("=============================================================================");

       for (int x = 0; x < 9; x++) {

         printResults(names, diameter, mass, x);

         double surfaceGravity = calcGravity(mass, diameter);

         System.out.println(surfaceGravity);                        
      }  

  System.out.println();
}

}

現在、出力は次のようになっています。

Planet Name            Diameter            Mass(kg)                g (m/s^2)
=============================================================================
Mercury               4880000.0          3.3000e+23
0.655252407816091
Venus                12103000.6          4.8690e+24
0.655252407816091
Earth                12756000.3          5.9720e+24
0.655252407816091
Mars                  6794000.0          6.4219e+23
0.655252407816091
Jupiter             142984000.0          1.9000e+27
0.655252407816091
Saturn              120536000.0          5.6800e+26
0.655252407816091
Uranus               51118000.0          8.6830e+25
0.655252407816091
Neptune              49532000.0          1.0247e+26
0.655252407816091
Pluto                 2274000.0          1.2700e+22
0.655252407816091

どんな助けでも大歓迎です!

4

2 に答える 2

1

メソッドcalcGravityは、すべての惑星の表面重力を計算し、最後のものを返します。それを行う代わりに、おそらく特定の 1 つの惑星のみの表面重力を計算する必要があります。

public static double calcGravity(double m, double d)
{
 double gravity = (((6.67E-11) * (m)) / (Math.pow(d / 2, 2)));
 return gravity;        
}

次に、すべての惑星のデータではなく、特定の惑星のデータを使用してこのメ​​ソッドを呼び出します。

double surfaceGravity = calcGravity(mass[x], diameter[x]);
于 2013-11-09T20:24:04.237 に答える
1
System.out.printf("%-10s%21.1f%20.4e",names[x],diameter[x],mass[x]); // removed 2 characters

System.out.printf("%.21f\n", surfaceGravity); // play with number to get it right
于 2013-11-09T20:28:00.790 に答える