1

我有一个二维数组,如下所示:

int[][] array=
{
    {2,3,3},
    {5,6,66}                        
};

我想获得行和列的长度:

int rows=  // get row length of array
int columns=  // get column length of array

谢谢!

4

5 回答 5

8

为了更好地理解这一点,请看一下这张图片:

在此处输入图像描述

这个图像就是你所说的2D array,正如你所看到的,它实际上是一个array of arrays

nums.length将返回蓝色数组的长度(即行数)。
现在,如果您想获取列数,您应该访问一行nums[0],例如,然后执行nums[0].length,这将产生 4。

现在,只需替换numsarray...


注意:正如您在图像中看到的,列数可能不同,并且每行不必相同。

于 2013-10-13T09:20:29.463 回答
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
于 2013-10-13T09:23:51.683 回答
0

在 2D 数组中,第一个数组中的每个位置都有一个数组,因此您可以通过获取 2D 数组长度来获得列数,然后获取每列的大小,您必须在 2D 数组中的位置获取长度

于 2013-10-13T09:47:24.413 回答
0

我就是这样做的。假设 a 是所有行的长度不同的任何二维数组。

for(int i=0;i<a.length;i++)
    {
        for(int j=0;j<a[i].length;j++)
        {
            System.out.print(a[i][j]);
        }
    }
于 2017-09-09T05:29:23.090 回答
-2

尝试这个

int upperBound0 = array.length - 1; // = 1
int upperBound1 = array[0].length - 1; // = 2

正如你评论的:

上限是行和列的最大索引

于 2013-10-13T09:24:13.340 回答