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입니다. 배열이 2 개의 요소로 정의되며, 각 요소는 trhee 차원 배열 인 Object으로 정의되고 기본값은 null입니다.

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

  2. 그런 다음 우리는 같은 방법으로 다음 차원으로 작동 할 수 있습니다. arr[1] = new int[2][][];

  3. 당신이 NPE를 얻을 왜 그게

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

    . 모든 치수를 새 구문으로 정의해야합니다 (JVM은 자동으로 수행하지 않습니다).

0

배열의 3 차원 및 4 차원 크기가 알려지지 않아 오류가 발생합니다.

사용하려면 크기를 지정하십시오.

이와 비슷한 것.

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

초기화시 크기를 할당하지 않는 것이 좋지만 할당 전에 액세스하려고하면 제대로 작동하지 않을 수도 있습니다. 이것이 3 차원의 코드에서 발생합니다.

//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;