Java Array采用不同的方法

时间:2011-04-24 20:14:24

标签: java

我认为我犯了一个非常基本的错误,但在玩了一个小时之后,我无法解决这个问题。我在一个方法中创建一个数组并尝试在main方法中调用它,但是当从main方法引用数组时,我一直得到一个空指针异常。我的班级是:

public class test {

    public static String[][] Data;

     public static void createArray() {
            System.out.println("Test 2");

            String[][] Data = new String[2][4];

             Data[0][0] = "13CG43"; //CD ID
             Data[0][1] = "POP"; //Type
             Data[0][2] = "12.99"; //Price
             Data[0][3] = "5"; //Stock

             //Second row
             Data[1][0] = "293DD3"; //CD ID
             Data[1][1] = "HIP"; //Type
             Data[1][2] = "14.99"; //Price
             Data[1][3] = "2"; //Stock

        }


    public static void main(String[] args) {

        try {
            System.out.println("Test1");
            createArray();
            System.out.print("Test3 " + Data[0][0]);

            } catch(Exception e) {
                System.out.println("Error");
            }


    }
}

谢谢,

2 个答案:

答案 0 :(得分:7)

  public static void createArray() {
            System.out.println("Test 2");

            Data = new String[2][4];

             Data[0][0] = "13CG43"; //CD ID
             Data[0][1] = "POP"; //Type
             Data[0][2] = "12.99"; //Price
             Data[0][3] = "5"; //Stock

             //Second row
             Data[1][0] = "293DD3"; //CD ID
             Data[1][1] = "HIP"; //Type
             Data[1][2] = "14.99"; //Price
             Data[1][3] = "2"; //Stock

        }

您在方法中声明了一个新的局部变量,而不是修改全局变量。

答案 1 :(得分:4)

那是因为数组声明它在函数调用中。将它放在外面,在返回createArray函数后数据仍然可用。

变化:

String[][] Data = new String[2][4];

Data = new String[2][4];

您在createArray函数范围内重新声明了Data数组。所以你的程序中有2个数据数组。一个全局函数和一个函数本地函数,隐藏全局函数。最新的,即您正在初始化的数组,将在返回createArray函数后被销毁。