访问多维数组的所有元素

时间:2016-02-21 14:16:15

标签: java arrays

我有一个方法,它接受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。

我真的很感激这一方面。

1 个答案:

答案 0 :(得分:0)

由于您在

的声明,它打印出12次0
anArray = 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);
        }
}