Java 访问多维数组的所有元素

Java 访问多维数组的所有元素,java,arrays,Java,Arrays,我有一个方法,它为参数列表中的数组获取维度 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

我有一个方法,它为参数列表中的数组获取维度

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);
    }
}
这会失败,因为u不是数组而是int


非常感谢您的帮助。

由于您在

anArray = new int[sizes[0]];
此时您将得到0。数组大小为12的元素,并初始化12x1维整数数组。这和

anArray = new int[12];
首先,要解决您的问题,您需要将anArray从nx1-d-Array更改为nx2-d-Array(将anArray[]更改为anArray[])

之后,您可以通过以下方式使用参数初始化阵列:

anArray = new int[size[0]][size[1]];
但在这一点上,你需要清楚这一点。。。“大小”作为参数的意思。内。。。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);
        }
}

看看这个答案:J.su,我已经看到了这一点,但是我在“for(int[]a:flatArray)”@cricket_007中得到了“int不能转换为int[]”错误,它在构造函数中实例化,具体取决于传递的维度列表。所以它可以是int[],int[]]或int[][],所以我需要将二维和三维数组都转换为1-d@cricket_007抱歉,现在修复了刚才的输入错误,本来是错误的。您正在将
anArray
声明为
int[]
,也就是说,声明为一维int数组,但似乎希望具有任意数量的维度。