2014-01-04 3 views
0

Я нахожусь в AP Computer Science, и мы только что научились использовать наши собственные статические методы. Это моя вторая программа, использующая их, но на этот раз задействованы массивы, и я получаю очень странный результат. Я надеялся, что кто-то поможет мне понять, почему, я полагаю, что я неправильно возвращаю массив результатов.Странный вывод в Java

Целью программы является вычисление поверхностной гравитации всех планет в солнечной системе. В 2 вещи, которые мне нужны помощь, являются:

  1. Я не знаю, как форматировать научной нотации с использованием printf() так , что действительно перепутались.
  2. Мой массив силы тяжести содержит [[email protected] для каждого номера, и я не могу выяснить почему.

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

Потому что я не могу отправить изображения, я не знаю, как получить выход здесь, чтобы выглядеть, как на моем компьютере. Это мой полный код, так что только то, что вам нужно сделать, чтобы увидеть мой вывод, - это все это вставить в класс и запустить.

В заключение: Да, я ноб, но я надеюсь, что вы, ребята, можете мне помочь.

+1

Это результат 'Object # toString()'. Посмотрите на типы массивов. –

+0

Вы печатаете массив ('gravity') в цикле for вместо' double' ('grav'), который дает вам значение' Object.toString() 'по умолчанию, поскольку класс массива не переопределяет его. –

ответ

6

Я думаю, вы должны изменить это:

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

к:

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

, потому что вы хотите напечатать элементы, а не массив.

0

Вы печать Array ссылки, вместо Array значений - Вы можете изменить свой цикл,

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

или вы могли бы устранить этот цикл, используя Arrays.toString(double[]) как так -

System.out.println(java.util.Arrays.toString(gravity)); 
Смежные вопросы