我有一个方法,它接受params列表中数组的维度
private int[] anArray;
public MDArray(int... sizes){
anArray = new int[sizes[0]];
for (int u : anArray){
System.out.println(u);
}
如果我将(12,13)作为参数传入我的函数,那么循环打印出0 12次。我不确定如何访问多维数组的子图层。
我的理解是,在Java中没有真正的多维数组,而是数组数组。
如果我尝试
for (int[] u: anArray) {
for (int elem: u) {
System.out.println(elem);
}
}
这失败了因为你不是一个数组而是一个int。
我真的很感激这一方面。
答案 0 :(得分:0)
由于您在
的声明,它打印出12次0anArray = new int[sizes[0]];
此时,您将得到数组大小的0.元素,即12并初始化12x1-dimensional-integerarray。它与
相同anArray = new int[12];
首先要解决您的问题,您需要将aAray从nx1-d-Array更改为nx2-d-Array(将anArray []更改为anArray [] [])。
之后,您可以使用您的参数以这种方式初始化anArray:
anArray = new int[size[0]][size[1]];
但在那时你需要明确'int ... size'作为参数的意思。 int ... size是一个整数数组,它取决于函数调用中的值。 在你的情况下你有MDArray(12,13)作为电话。它与int [2]一起交给了值(12,13)。
因此,为了确保在调用函数时设置正确的参数,您可以简单地检查以下参数:
if(sizes.length>=2){
anArray = new int[size[0]][size[1]];
}
在if子句中,确保在数组中至少保存了2个参数。
编辑:抱歉忘了点:
最后,您可以使用类似
的内容访问该数组for(int[] e :anArray)
for(int k:e){
System.out.println(k);
}
}