0

我不斷收到此錯誤:線程「main」java.lang.NullPointerException中的異常。我不知道這裏有什麼問題..多維字符串數組上的NullPointerException

String[][][][] fourDArray = new String[numOfModules+1][3][][]; 
    String[] x = new String[1]; 
    x[0] = splitArray[0]; 
    fourDArray[0][0][0] = x; 
+1

很明顯,你沒有限定的第三和第四尺寸大小 –

+0

當陣列的大小(或它的尺寸)不被聲明,則不能使用。它還沒有第0個元素。如果你希望它是動態的,你必須使用'ArrayList' –

回答

0

當您定義多維數組時,您必須定義至少第一維大小。這是最初的數組。所有其他尺寸僅爲子陣列。這個可能沒有定義,也就是說,當你閱讀它時你會得到NPE。

隨着步驟到步驟:

  1. 定義一條4維數組。這意味着我們定義了一維數組有2個元素,其中每個元素是trhee-dimension數組是Object,那麼默認值是null

    int[][][][] arr = new int[2][][][];

  2. 然後我們可以用同樣的方式下一維工作。

    arr[0] = new int[2][][]; arr[1] = new int[2][][];

  3. 這就是爲什麼你NPE。您必須手動用新語句定義所有維(JVM不會自動執行)。

0

陣列中第3和第4維的大小是未知的,導致錯誤。

請指定大小,如果你需要使用它。

就是這樣。

String[][][][] fourDArray = new String[10][3][6][7]; 
0

可以在初始化時不分配(定義大小)維度,但如果您嘗試在分配之前訪問它,則不會工作。這就是你的代碼與第三維發生的事情。

//Since you are going to access 3rd dimension later, you will have to allocate it 
    String[][][][] fourDArray = new String[numOfModules + 1][3][3][]; 
    String[] x = new String[1]; 
    x[0] = "some_string"; 
    //So, it is OK to access (index by) 3rd dimension 
    fourDArray[0][0][0] = x;