获取二维数组的长度

时间:2011-09-09 20:42:42

标签: java arrays

如果我不知道它,我怎么得到数组的第二维? array.length仅提供第一维。

例如,在

public class B {
    public static void main(String [] main){
        int [] [] nir = new int [2] [3];
        System.out.println(nir.length);
    }
}

我如何获得nir的第二维的值,即3。

谢谢

11 个答案:

答案 0 :(得分:96)

哪个 3?

你已经创建了一个多维数组。 nir是一个int数组的数组;你有两个长度为3的数组。

System.out.println(nir[0].length); 

会给你第一个数组的长度。

另外值得注意的是,您不必像过滤那样初始化多维数组,这意味着所有数组的长度不必相同(或根本不存在)。

int nir[][] = new int[5][];
nir[0] = new int[5];
nir[1] = new int[3];
System.out.println(nir[0].length); // 5
System.out.println(nir[1].length); // 3
System.out.println(nir[2].length); // Null pointer exception

答案 1 :(得分:9)

你可以这样做:

 System.out.println(nir[0].length);

但请注意,Java中没有真正的二维数组。每个“第一级”数组包含另一个数组。这些阵列中的每一个都可以具有不同的尺寸。 nir[0].length的大小不一定与nir[1].length相同。

您可以查看http://anh.cs.luc.edu/170/notes/2dArrays/ar2.html哪些图片能够很好地显示出来。

答案 2 :(得分:4)

使用

   System.out.print( nir[0].length);

看看这个打印2维数组内容的for循环 第二个循环迭代每行中的列

for(int row =0 ; row < ntr.length; ++row)
 for(int column =0; column<ntr[row].length;++column)
    System.out.print(ntr[row][column]);

答案 3 :(得分:3)

int secondDimensionSize = nir[0].length;

第一个维度的每个元素实际上是另一个长度为第二维的数组。

答案 4 :(得分:3)

以下是如何枚举锯齿状二维数组(3行3到5列)中元素的完整解决方案:

    String row = "";
    int[][] myArray = {{11, 12, 13}, {14, 15, 16, 17}, {18, 19, 20, 21, 22}};
    for (int i=0; i<myArray.length; i++) {
        row+="\n";
        for (int j = 0; j<myArray[i].length; j++) {
            row += myArray[i][j] + "  ";
        }
    }
    JOptionPane.showMessageDialog(null, "myArray contains:" + row);

Jagged array's contents

答案 5 :(得分:1)

nir[0].length

注意0:阵列中必须至少有一个数组 注1:并非所有子阵列都不需要相同的长度。

答案 6 :(得分:1)

假设第二维中每个数组的长度相同,则可以使用

public class B {    
 public static void main(String [] main){
    int [] [] nir= new int [2] [3];
    System.out.println(nir[0].length);
 }
}

答案 7 :(得分:1)

在最新版本的JAVA中,这是您的操作方式:

nir.length //is the first dimension
nir[0].length //is the second dimension

答案 8 :(得分:0)

请记住,2D array实际上不是2D array。数组的每个元素本身都是一个数组,不一定大小相同。  因此,nir[0].length可能等于或不等于nir[1].length nir[2]length

希望有帮助......:)

答案 9 :(得分:0)

扩展多维数组总长度,

通常对于您的情况,因为2D数组的形状是“平方”。

int length = nir.length * nir[0].length;

但是,对于2D数组,每行可能没有完全相同数量的元素。 因此,我们需要遍历每一行,添加元素数量。

int length = 0;
for ( int lvl = 0; lvl < _levels.length; lvl++ )
{
    length += _levels[ lvl ].length;
}

如果是N-D数组,这意味着我们需要N-1 for循环来获得每一行的大小。

答案 10 :(得分:0)

//initializing few values
int[][] tab = new int[][]{
    {1,0,1,0,1,0,1,0},
    {0,1,0,1,0,1,0,1},
    {1,0,1,0,1,0,1,0},
    {0,1,0,1,0,1,0,1},
    {1,0,1,0,1,0,1,0},
    {0,1,0,1,0,1,0,1},
    {1,0,1,0,1,0,1,0},
    {0,1,0,1,0,1,0,1}
};

//tab.length in first loop
for (int row = 0; row < tab.length; row++)
{
    //tab[0].length in second loop
    for (int column = 0; column < tab[0].length; column++)
    {
        //printing one value from array with space
        System.out.print(tab[row][column]+ "   ");
    }
    System.out.println(); // new row = new enter
}