3d数组使用Java.util.Scanner.nextInt()将null作为输入

Shu*_*ham 0 java arrays nullpointerexception

当我输入数组元素时,以下代码给出了NullPointerException.经过调试和分析后,我发现只有在使用3d数组时才会遇到异常.2d它工作正常.显然由于某种原因,数组将null作为输入.有人可以解释一下吗?也许3D阵列有问题.

编辑:另外,在我的情况下,第三维的值是未知的,因为它将取决于需要首先输入的arr [0] [0] [0]的值.因此应在运行时分配第三维长度.

import java.util.*;
public class NewClass 
{
    public static void main(String args[])
    {
        int T;
        Scanner sc = new Scanner (System.in);
        T=sc.nextInt();//this works fine
        int arr[][][]= new int[T][4][];
        for(int i=0;i<T;i++)
        {
            for(int j=0;j<3;j++)
            {
                arr[i][j][0]=sc.nextInt();//NullPointerException after input

            }

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

use*_*er7 8

您尚未指定(或初始化)第三个维度.

您可以将arr初始化更改为

int arr[][][]= new int[T][4][1];
Run Code Online (Sandbox Code Playgroud)

或者可以在内部for循环内创建第三维的数组

for(int j = 0; j < 3; j++) {
    arr[i][j] = new int[1];
    arr[i][j][0] = sc.nextInt();
}
Run Code Online (Sandbox Code Playgroud)