2013-10-12 98 views
0

我必須編寫一個程序來確定我們太陽系中每個星球上的表面引力,並將它打印出來並將其寫入文本文件。靜態方法和陣列

我必須在我的程序中使用不同的靜態方法,我必須將每個行星的重力,質量和半徑寫入數組。

我的問題是,我很確定我的代碼是正確的,但我不斷收到一個ArrayOutOfBoundsException calcGravity,但我不認爲我的數組超出了界限。我在做9顆行星,我的陣列設置爲9.

我試過double[] gravity = {9};double[] gravity = {}但它仍然無法正常工作。我真的不知道該怎麼在這一點上做的

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

public class Gravity 
{ 

public static double[] calcGravity(double[] radius, double[] mass) 
{ 
    double[] gravity = {9}; 
     for(int i = 0; i < 9; i++) 
    { 
     gravity[i] = (6.67E17 * mass[i])/(radius[i] * radius[i]);    
    } 
    return gravity; 
} 

public static void printResults(String[] name, double[] radius, double[] mass, double  gravity[]) 
{ 
     System.out.printf("%9s %8s %6s %7s","Planet", "Diameter (km)", "Mass (kg)", "g (m/s^2)\n"); 
     System.out.println("----------------------------------------------------"); 
     for(int i = 0; i < 9; i++) 
     { 
      System.out.printf("%9s %8s %6s %7s", name[i], Math.pow(radius[i], 2), mass[i], gravity[i]); 
     } 

} 

//print the gravity values to text file 
public static void printToFile(double[] gravity)throws IOException 
{ 
    PrintWriter outFile = new PrintWriter (new File("gravity data.txt")); 
    for(int a = 0; a < 9; a++) 
    { 
    outFile.println(gravity[a]); 
    } 
} 

public static void main(String[] args)throws IOException 
{ 
    // Initialize variables 
    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[] mass = {3.30E23, 4.87E24, 5.97E24, 6.42E23, 1.90E27, 5.68E26, 8.68E25, 1.02E26, 1.27E22}; 

    // Processing 
    double[] gravities = calcGravity(radii, mass); 

    // Output 
    printResults(names, radii, mass, gravities); 
    printToFile(gravities); 


} //end main 
}//end class 

回答

4

該行創建大小爲1的陣列,裏面數9:

double[] gravity = {9}; 

你想

double[] gravity = new double[9]; 

它創建裏面有9個空的「盒子」的雙數組。

PS:冥王星不再是星球:)