我不明白爲什麼這段代碼會拋出一個空指針異常,因爲我認爲第3行將sampleArray[0][0])
的值設置爲1
。這段代碼怎麼會拋出nullpointerexception?
int arrSize = 100;
String[][] sampleArray = new String[arrSize][];
sampleArray[0][0]="1";
System.out.println(sampleArray[0][0]);
任何幫助?
我不明白爲什麼這段代碼會拋出一個空指針異常,因爲我認爲第3行將sampleArray[0][0])
的值設置爲1
。這段代碼怎麼會拋出nullpointerexception?
int arrSize = 100;
String[][] sampleArray = new String[arrSize][];
sampleArray[0][0]="1";
System.out.println(sampleArray[0][0]);
任何幫助?
sampleArray[0]
尚未初始化爲數組。 你初始化數組的第一個維度,而不是第二個
您需要做的是這樣sampleArray[0] = new String[size]
String[][] sampleArray = new String[arrSize][]
工作,因爲你正在創建具有其他數組引用數組的初始化。其他陣列中的每一個陣列都可以有不同的大小,您可以根據需要進行設置。我的意思是,以下將是完全合法的:
sampleArray[0] = new String[10]; sampleArray[1] = new String[5]; System.out.println(sampleArray[0][9]); System.out.println(sampleArray[1][4]);
你不能只設置第一個維度的二維數組的大小。因爲它是一個數組數組,所以你不能找回沒有實例化數組的數組。
確定代碼有效,如果\t我將第2行更改爲:\t String [] [] sampleArray = new String [arrSize] [10]; 這是否意味着我總是必須設置第一維和第二維的大小? 但我不明白爲什麼這仍然是一個有效的初始化程序: String [] [] sampleArray = new String [100] []; –
它等於String [] sampleArray = new String [100] ..當你實例化一個數組時,你必須給它它的大小。嘗試使用ArrayList
請參閱我對mtefi答案的評論。 –
我更新了我的回答 – geoand