首页 > 解决方案 > 如何在 Java 中正确地动态初始化多维数组?

问题描述

Q. 如何在 Java 中动态初始化数组?

我正在尝试使用以下代码将一些指标存储在数组中。

 public static void main (String[] args) {
    Scanner in = new Scanner(System.in);
    int t = in.nextInt(); // outer metric size 
    int [] n = new int[t]; // inner square metric e.g. 3x3
    int [][][] a = new int[t][][]; // e.g. 2x3x3, 10x3x3

    //input block
    for (int h=0; h<t; h++){
        n[h] = in.nextInt(); //inner square metric dimensions
        for (int i=0;i<n[h];i++){
            for (int j=0;j<n[h];j++){
                a[h][i][j] = in.nextInt();    //metric values
            }
        }
    }

导致空指针异常,这又是数组引用预期错误。将数组更改为固定大小不会按预期导致此问题。

  int [] n = new int[70];
  int [][][] a = new int[70][10][10];

因此,我想了解初始化动态数组的正确方法。

标签: javamultidimensional-arraynullpointerexception

解决方案


int[][]您必须在外循环中分配一个新的。就像是,

n[h] = in.nextInt(); //inner square metric dimensions
a[h] = new int[n[h]][n[h]]; //add this

推荐阅读