如果我不知道它,我怎么得到数组的第二维? array.length
仅提供第一维。
例如,在
中public class B {
public static void main(String [] main){
int [] [] nir = new int [2] [3];
System.out.println(nir.length);
}
}
我如何获得nir
的第二维的值,即3。
谢谢
答案 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);
答案 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
}