Java,请在图表中打印计算结果?

Java,请在图表中打印计算结果?,java,printf,Java,Printf,计划的总体目的:确定太阳系9颗行星中每颗行星的表面重力(g) (我知道,我知道……冥王星不是行星,但它在这个项目中) 问题: 程序将创建图表并计算表面重力。我需要帮助使格式正确-它应该在列中排列。同样在试图解决这个问题的过程中,我不知怎么搞砸了程序,以至于它只打印出其中一颗行星的计算表面积 import java.io.IOException; import java.io.PrintWriter; import java.io.File; public class GravityV1 {

计划的总体目的:确定太阳系9颗行星中每颗行星的表面重力(g)

(我知道,我知道……冥王星不是行星,但它在这个项目中)

问题: 程序将创建图表并计算表面重力。我需要帮助使格式正确-它应该在列中排列。同样在试图解决这个问题的过程中,我不知怎么搞砸了程序,以至于它只打印出其中一颗行星的计算表面积

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

非常感谢您的帮助

您的
calcGravity
方法计算所有行星的表面重力,并返回最后一个。与其这样做,它可能应该只计算一个特定行星的表面重力:

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

非常感谢你们两位,你们的综合答案很有效,除了我如何在两者之间留出空间?第一行看起来像这样(但都在一行上):Mercury 4880000.03.3000e+233.697090835796829000000我想我玩得不够多,“%26.10f\n”非常完美。再次感谢您(请看上面的评论:)谢谢!你指的是哪一条评论?对不起,Joni,我本想问你和我在上述答案上评论的格式相同的问题,但是arkonautom回答了。再次感谢您抽出时间。
double surfaceGravity = calcGravity(mass[x], diameter[x]);
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