Java 求二维数组的长度

Java 求二维数组的长度,java,arrays,Java,Arrays,如果我不知道数组的第二维度,如何得到它数组。长度仅给出第一个维度 例如,在 public class B { public static void main(String [] main){ int [] [] nir = new int [2] [3]; System.out.println(nir.length); } } 如何获得nir的第二维度的值,即3 谢谢哪3个 您已经创建了一个多维数组nir是一个int数组数组;有两个长度为3的数组

如果我不知道数组的第二维度,如何得到它<代码>数组。长度仅给出第一个维度

例如,在

public class B {
    public static void main(String [] main){
        int [] [] nir = new int [2] [3];
        System.out.println(nir.length);
    }
}
如何获得
nir
的第二维度的值,即3

谢谢哪3个

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

System.out.println(nir[0].length); 
将给出第一个数组的长度

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

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

您可以执行以下操作:

 System.out.println(nir[0].length);
但是请注意,Java中没有真正的二维数组。每个“第一级”数组包含另一个数组。每个阵列都可以有不同的大小<代码>nir[0]。长度不一定与
nir[1]的大小相同。长度

nir[0].length
注意0:阵列中必须至少有一个阵列。

注1:并非所有子数组都必须具有相同的长度。

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

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

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

for(int row =0 ; row < ntr.length; ++row)
 for(int column =0; column<ntr[row].length;++column)
    System.out.print(ntr[row][column]);
for(int行=0;行对于(int column=0;column请记住,
2D array
不是真正意义上的
2D array
。数组本身的每个元素都是数组,不一定大小相同。 因此,
nir[0]。长度
可能等于也可能不等于
nir[1]。长度
nir[2]长度

nir[0].length

希望对…有所帮助:)

扩展多维数组总长度

通常情况下,因为2D阵列的形状是“平方”的

但是,对于二维数组,每行的元素数可能不完全相同。 因此,我们需要遍历每一行,增加元素的数量

int length = 0;
for ( int lvl = 0; lvl < _levels.length; lvl++ )
{
    length += _levels[ lvl ].length;
}
int-length=0;
对于(int lvl=0;lvl<_levels.length;lvl++)
{
长度+=\U级[lvl]。长度;
}

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

这里有一个完整的解决方案,介绍如何在一个锯齿状的二维数组中枚举元素(有3行和3到5列):

字符串行=”;
int[]myArray={{11,12,13},{14,15,16,17},{18,19,20,21,22};

对于(int i=0;i,在最新版本的JAVA中,您可以这样做:

nir.length //is the first dimension
nir[0].length //is the second dimension
//初始化几个值
int[][]选项卡=新建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.1第一个循环中的长度
对于(int row=0;row
注意,如果尚未创建二维数组,则可能引发空指针异常;打印前应选中
ntr[row]!=null
。+1特别是关于非矩形的危险建议(我的意思是对数据进行假设是危险的,而不是使用非矩形是危险的)。这愚弄了许多新手程序员,也愚弄了许多本该更了解的非新手程序员!因此本质上,
int[]nir=new int[2][3];
中的
3
是假的(没有实际用途).Right???或者它用于在每行分配3个单元格-每行中默认的列数???@KNU如果您使用明确定义第二维度为3的语法,那么您将得到每个数组的长度。我回答的第二部分只是指出您不必使用该语法。您可能需要特别指出,如何获得内部数组的长度。此外,一般情况下,建议计算当前行
int length = nir.length * nir[0].length;
int length = 0;
for ( int lvl = 0; lvl < _levels.length; lvl++ )
{
    length += _levels[ lvl ].length;
}
    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.length //is the first dimension
nir[0].length //is the second dimension
//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
}