Java中的奇怪输出

时间:2014-01-04 04:13:48

标签: java methods printf

我在AP计算机科学,我们刚刚学会了如何使用我们自己的静态方法。这是我使用它们的第二个程序,但这次涉及数组,我的输出非常奇怪。我希望有人可以帮我找出原因,我认为我没有正确地返回结果数组。

该计划的目的是计算太阳系中所有行星的表面重力。我需要帮助的两件事是:

  1. 我不知道如何使用printf()格式化科学记数法 这真的搞砸了。
  2. 我的重力数组包含每个数字[D@7248989f,我不能 找出原因。

  3. public static double[] surfaceGravity (double[] r,double[] m) {
    
        double[] g = new double[r.length];
    
        for (int count = 0; count < r.length; count++) { 
            g[count] = (6.67 * m[count]) / (r[count] * r[count]);
        }
        return g;
    }
    
    public static void printIntro() {
        System.out.printf("%8s%17s%12s%12s%n","Planet","Diameter (km)","Mass (kg)","g (m/s^2)");
        System.out.println("-------------------------------------------------------------------");
    }
    
    public static void printData(String[] planet, double[] r, double[] m, double[] g) {
        for (int count = 0; count < r.length; count++) {
            System.out.printf("%9s%9.0f%17.6f%12.2f%n",planet[count],(r[count] * 2),m[count],g[count]);
        }
    }
    
    public static void main (String[] args) {
        //initialize arrays
        String[] planetNames = {"Mercury","Venus","Earth","Mars","Jupiter","Saturn","Uranus","Neptune"};
        //double[] mass = {1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0};
        double[] mass = {3.3E+23,4.87E+24,5.97E+24,6.42E+23,1.9E+27,5.69E+26,8.66E+25,1.03E+26};
        double[] radius = {2440000,6051000,6378000,3397000,71492000,60268000,25559000,24754000};
        double[] gravity = surfaceGravity(radius,mass);
    
        printIntro();
        printData(planetNames, radius, mass, gravity);
        //I added the line below to test the contest of my gravity array
        for (double grav: gravity) {
            System.out.println(gravity);
        }
    }
    

    因为我无法发布图片,所以我不知道如何让输出显示在我的计算机上。这是我的完整代码,所以只有你要看到我的输出才能将这一切都粘在一个类中并运行它。

    结束:是的我是一个菜鸟,但我希望你们能帮助我。

2 个答案:

答案 0 :(得分:6)

我认为你必须改变这个:

for (double grav: gravity) {
    System.out.println(gravity);
}

为:

for (double grav: gravity) {
    System.out.println(grav);
}

因为你想要打印元素,而不是数组。

答案 1 :(得分:0)

您正在打印Array引用,而不是Array值 - 您可以修改for循环,

for (double grav : gravity) {
  System.out.println(grav);
}

或者您可以使用Arrays.toString(double[])来消除该循环 -

System.out.println(java.util.Arrays.toString(gravity));