不同方法中的Java数组

不同方法中的Java数组,java,Java,我想我犯了一个非常基本的错误,但在玩了一个小时后,我无法解决这个问题。我在一个方法中创建了一个数组,并尝试在main方法中调用它,但是在从main方法引用数组时,我不断得到一个空指针异常。我的班级是: public class test { public static String[][] Data; public static void createArray() { System.out.println("Test 2");

我想我犯了一个非常基本的错误,但在玩了一个小时后,我无法解决这个问题。我在一个方法中创建了一个数组,并尝试在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");
            }


    }
}
谢谢

  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

        }

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

这是因为数组声明在函数调用中。只放在外部,返回createArray函数后数据仍然可用

更改:

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


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

在createArray()中,您定义了一个局部变量“Data”,该变量覆盖了类静态变量“Data”,该变量从未初始化过。只需使用类变量'Data',删除createArray()方法中的重新定义“String[][]”。+1但如果添加一个简短的解释,就可以完成它
Data = new String[2][4];