我有一个二维数组,如下所示:
int[][] array=
{
{2,3,3},
{5,6,66}
};
我想获得行和列的长度:
int rows= // get row length of array
int columns= // get column length of array
谢谢!
为了更好地理解这一点,请看一下这张图片:
这个图像就是你所说的2D array,正如你所看到的,它实际上是一个array of arrays。
nums.length
将返回蓝色数组的长度(即行数)。
现在,如果您想获取列数,您应该访问一行nums[0]
,例如,然后执行nums[0].length
,这将产生 4。
现在,只需替换nums
为array
...
注意:正如您在图像中看到的,列数可能不同,并且每行不必相同。
重要的是要了解 Java 并没有真正的二维数组。它有数组数组。这意味着,例如,你可以拥有这个:
int[][] array=
{
{1},
{1, 2, 3},
{1, 2, 3, 4, 5},
{1, 2}
};
所以第二层没有一个上限。Java 数组本质上是锯齿状的,上面的每个第二层都有自己的长度。
因此,要正确循环它们,您必须检查每个二级数组:
int x, y;
int[] second;
for (x = 0; x < array.length; ++x) {
second = array[x];
for (y = 0; y < second.length; ++y) {
// ....
}
}
完整示例:Live Copy
public class ArrayExample {
public static void main(String[] args) {
int[][] array=
{
{1},
{1, 2, 3},
{1, 2, 3, 4, 5},
{1, 2}
};
int x, y;
int[] second;
for (x = 0; x < array.length; ++x) {
second = array[x];
for (y = 0; y < second.length; ++y) {
System.out.println(x + "," + y + ": " + second[y]);
}
System.out.println();
}
}
}
输出:
0,0:1 1,0:1 1,1:2 1,2:3 2,0:1 2,1:2 2,2:3 2,3:4 2,4:5 3,0:1 3,1:2
或者,如果您不需要索引,只需要值,则可以使用增强for
循环:Live Example
public class ArrayExample {
public static void main(String[] args) {
int[][] array=
{
{1},
{1, 2, 3},
{1, 2, 3, 4, 5},
{1, 2}
};
for (int[] second : array) {
for (int entry : second) {
System.out.println(entry);
}
System.out.println();
}
}
}
输出:
1 1 2 3 1 2 3 4 5 1 2
在 2D 数组中,第一个数组中的每个位置都有一个数组,因此您可以通过获取 2D 数组长度来获得列数,然后获取每列的大小,您必须在 2D 数组中的位置获取长度
我就是这样做的。假设 a 是所有行的长度不同的任何二维数组。
for(int i=0;i<a.length;i++)
{
for(int j=0;j<a[i].length;j++)
{
System.out.print(a[i][j]);
}
}
尝试这个
int upperBound0 = array.length - 1; // = 1
int upperBound1 = array[0].length - 1; // = 2
正如你评论的:
上限是行和列的最大索引