[英]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.