我有一个2D数组如下:
int[][] array=
{
{2,3,3},
{5,6,66}
};
我想得到行和列的长度:
int rows= // get row length of array
int columns= // get column length of array
谢谢!
答案 0 :(得分:8)
为了更好地理解这一点,请看一下这张图片:
这个图像就是你所说的 2D array ,正如你所看到的,它实际上是一个数组。
nums.length
将返回蓝色数组的长度(即行数)
现在,如果您想获取列数,则应该按nums[0]
访问一行,然后执行nums[0].length
,这将产生4。
现在,只需将nums
替换为array
...
注意:正如您在图片中看到的那样,列数可能会有所不同,但每行的行数不必相同。
答案 1 :(得分:7)
理解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
答案 2 :(得分:0)
在2D数组中,第一个数组中的每个位置都有一个数组,因此您可以通过获取2D数组长度来获得列数,然后获得必须在2D数组中放置的每个列的大小。得到长度
答案 3 :(得分:0)
我就是这样做的。 假设a是任何2D数组,其中所有行的长度都不同。
for(int i=0;i<a.length;i++)
{
for(int j=0;j<a[i].length;j++)
{
System.out.print(a[i][j]);
}
}
答案 4 :(得分:-2)
试试这个
int upperBound0 = array.length - 1; // = 1
int upperBound1 = array[0].length - 1; // = 2
正如你评论的那样:
上限是行和列的最大索引