簡體   English   中英

Java Array的不同方法

[英]Java Array in different method

我認為我犯了一個非常基本的錯誤,但是在玩了一個小時之后,我無法解決這個問題。 我在一個方法中創建一個數組,然后嘗試在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];

Data = new String[2][4];

您是在createArray函數作用域內重新聲明Data數組。 因此,您的程序中有2個數據數組。 功能的一個全局變量和一個局部變量,隱藏了全局變量。 返回createArray函數后,最新的數組(即正在初始化的數組)將被銷毀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM