考虑:
int[][] multD = new int[5][];
multD[0] = new int[10];
这就是创建5行10列的二维数组的方法吗?
我在网上看到了这段代码,但语法没有意义。
考虑:
int[][] multD = new int[5][];
multD[0] = new int[10];
这就是创建5行10列的二维数组的方法吗?
我在网上看到了这段代码,但语法没有意义。
当前回答
创建5行10列的二维数组最常见的习惯用法是:
int[][] multD = new int[5][10];
或者,你也可以使用下面的代码,它更类似于你所拥有的,尽管你需要显式地初始化每一行:
int[][] multD = new int[5][];
for (int i = 0; i < 5; i++) {
multD[i] = new int[10];
}
其他回答
您可以按照其他人提到的方法创建它们。还有一点需要补充:你甚至可以用每一行创建一个倾斜的二维数组,不一定有相同数量的列,就像这样:
int array[][] = new int[3][];
array[0] = new int[3];
array[1] = new int[2];
array[2] = new int[5];
试试下面的方法:
int[][] multi = new int[5][10];
... 这是类似这样的东西的简称:
int[][] multi = new int[5][];
multi[0] = new int[10];
multi[1] = new int[10];
multi[2] = new int[10];
multi[3] = new int[10];
multi[4] = new int[10];
注意,每个元素都将被初始化为int, 0的默认值,因此上述也等价于:
int[][] multi = new int[][]{
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};
Try:
int[][] multD = new int[5][10];
注意,在代码中,只有2D数组的第一行被初始化为0。 第二行到第五行根本不存在。如果你试着打印它们,你会得到所有的null。
这些类型的数组在Java中被称为锯齿数组:
int[][] multD = new int[3][];
multD[0] = new int[3];
multD[1] = new int[2];
multD[2] = new int[5];
在这个场景中,数组的每一行都包含不同数量的列。在上面的例子中,第一行包含三列,第二行包含两列,第三行包含五列。你可以在编译时初始化这个数组,如下所示:
int[][] multD = {{2, 4, 1}, {6, 8}, {7, 3, 6, 5, 1}};
你可以很容易地迭代数组中的所有元素:
for (int i = 0; i<multD.length; i++) {
for (int j = 0; j<multD[i].length; j++) {
System.out.print(multD[i][j] + "\t");
}
System.out.println();
}
也可以用以下方式声明它。这不是什么好设计,但很管用。
int[] twoDimIntArray[] = new int[5][10];