如何在二维数组中获取行和列的长度?

时间:2013-10-13 09:08:14

标签: java arrays

我有一个2D数组如下:

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

我想得到行和列的长度:

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

谢谢!

5 个答案:

答案 0 :(得分:8)

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

enter image description here

这个图像就是你所说的 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

正如你评论的那样:

上限是行和列的最大索引