java - 如何在 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];
因此,我想了解初始化动态数组的正确方法。
解决方案
int[][]
您必须在外循环中分配一个新的。就像是,
n[h] = in.nextInt(); //inner square metric dimensions
a[h] = new int[n[h]][n[h]]; //add this
推荐阅读
- json - Swift Realm 导入 Json 数组数据
- c++ - 通过引用传递数学
- java - 从 JPA 实体 throwingStackOverflowError 异常创建 Gson 对象
- javascript - 有没有办法使用哈希/校验和来确保已发布的 npm 包的完整性?
- python - Numpy:在每行中的某个索引之后替换一行的剩余列
- c++ - 向 Microsoft 提供有关 MFC 的反馈
- javascript - Javascript 验证函数值
- c# - 使用带有 C# 的 Selenium WebDriver 遍历链接
- mongodb - 如何在 mongo-go-driver 中使用接口类型作为模型?
- react-native - 如何在 React Native 中全局更改高度、宽度单位