获取二维数组的长度

如果我不知道数组的第二维,我该如何得到它? array.length只给出第一个维度。

例如,在

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

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

谢谢

9 Solutions collect form web for “获取二维数组的长度”

3个?

你已经创build了一个multidimensional array。 nir是int数组的数组; 你有两个长度为三的数组。

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

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

另外值得注意的是,你不必象你那样初始化multidimensional array,这意味着所有的数组不必是相同的长度(或根本不存在)。

 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 

你可以做 :

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

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

你可以看看http://anh.cs.luc.edu/170/notes/2dArrays/ar2.html有一个很好的图片来显示。

使用

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

看这个for循环打印2维数组的内容,第二个循环遍历每一行的列

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

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

这里有一个完整的解决scheme来枚举锯齿状的二维数组(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); 

锯齿阵列的内容

 nir[0].length 

注意0:你必须在你的数组中至less有一个数组。
注1:并不是所有的子数组都不需要相同的长度。

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

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

请记住, 2D array不是真正意义上的2D array中的每个元素本身都是一个数组,而不一定是相同的大小。 所以, nir[0].length可以或不可以等于nir[1].length nir[2]length

希望帮助.. 🙂

扩展为multidimensional array总长度,

通常对于你的情况,因为二维数组的形状是“平方”。

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

但是,对于2D数组,每行可能不具有完全相同数量的元素。 所以我们需要遍历每一行,增加元素数量。

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

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

  • 如何在Swift中为Int数组实现Hashable协议(自定义string结构)
  • 在Java中的数组初始化
  • 总结数组中的属性值的更好方法(使用Angularjs)
  • JavaScript的array.clear()不是一个函数吗?
  • 从数组中删除元素(Java)
  • 检查对象是否是数组?
  • PHP:从数组中删除一个元素
  • 将两个NSArrays并排排列在一起
  • 为什么一根长弦比另一根小弦要占用更多空间?
  • 清除PHP数组值的最佳方法
  • jQuery .each()向后