我无法使数组全局化

时间:2013-05-27 21:01:20

标签: java arrays

我需要在一行中编写数组并将其传递到几个不同的类中。到目前为止,这是我的代码。我将如何使阵列全球化?我很迷茫。     这是我通过在线课程教授的方式。         公共类GravityV1         {

 String[] planet= {"Mercury", "Venus","Earth","Mars", "Jupiter", "Saturn", "Uranus","Pluto"};
 int[] diameter = { 4876, 12107, 12755, 6794, 142983, 120536, 51117, 49527, 2390};
 double[] mass= { 3.30e23,4.87e24,5.97e24,6.42e23,1.90e27,5.69e26, 8.66e25, 1.03e26, 1.31e22};



public  double calcgravity(double g, double r, double m)
{

g=(6.67e-11*m)/r;
    return g;
}
public static void printdata()
{

    System.out.println ("Planetary Data");
    System.out.println("Planet");
    System.out.printf("%8s", "Diameter (Km)");
    System.out.printf("%8s", "Mass (Kg)");
    System.out.printf("%10s", "g(ms^-2)");
    System.out.println("----------------------------------------------------------------------------------------------------------------------------------");
    for (int index=0; index<9; index++)
    {System.out.println( planet[index]);
    System.out.printf("%8f", diameter[index]);
    System.out.printf("%8f", mass[index]);

}
}
public static void main(String[] args)
{

     }
}

3 个答案:

答案 0 :(得分:1)

两个选项:

  1. 让他们成为您某个班级的静态成员。
  2. 每次在不同的地方需要时,只需将数组作为参数传递。

答案 1 :(得分:0)

通常的模式是:public static final。这是一个全局可访问且不可修改的数组引用:

public class GravityV1 {   

  public static final String[] PLANETS = {  "Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Pluto"};
  public static final int[] DIAMETERS = { 4876, 12107, 12755, 6794, 142983, 120536, 51117, 49527, 2390};
  public static final double[] MASSES = { 3.30e23, 4.87e24, 5.97e24, 6.42e23, 1.90e27, 5.69e26, 8.66e25, 1.03e26, 1.31e22};

  // ...

请注意,命名约定要求常量的资本名称(最终静态)。将三个属性存储在三个不同的阵列中并不是最好的设计。你应该引入一个新的类来保存每个行星的属性。像

这样的东西
public class Planet {
   private String name;
   private double mass;
   private int diameter;

   // Constructor

   // getters for the three fields
}

答案 2 :(得分:0)

您可以将数组设为公共静态,以使其可全局访问。静态成员是类成员,不需要对象实例化。

看起来你想要创建一个常量列表(行星阵列肯定是这样的)。你可以使用枚举。

public enum Planets {

    MERCURY, VENUS, EARTH, MARS, JUPITER, SATURN, URANUS, PLUTO

}

编辑:在本例中考虑Planet enum

http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html