Java中的多维数组长度

31
如何找到非等索引的多维数组的长度?
例如,我有一个二维数组 int[][] pathList = new int[6][4],我需要找到 '6' 和 '4' 的值,而不是硬编码索引。
我可以通过 pathList.length 找到 '6',但如何获得 '4' 呢?

8
理解这个问题的答案关键在于理解多维数组是一个数组的数组,也就是说,每个元素本身又是一个数组。 - davmac
9个回答

67

这将为你提供索引为i的数组的长度。

pathList[i].length

需要注意的是,与C或C++不同,在Java中,二维数组元素的长度不一定相等。例如,当 pathList 实例化为 new int [6] [] 时,它可以容纳6个 int [] 实例,每个实例的长度可以不同。


因此,当您按照问题中展示的方式创建数组时,您可以这样做。

 pathList[0].length

由于你知道它们的长度都相同。在其他情况下,你需要定义第二维长度的确切含义,与你的应用程序相关 - 它可能是所有元素长度的最大值,或者可能是最小值。在大多数情况下,你需要迭代所有元素并读取它们的长度来做出决定:

for(int i = 0; i < pathList.length; i++)
{
    int currLen = pathList[i].length;
}

13

这是一个三维数组。

 int x[][][]=new int[5][8][10];
        System.out.println(x.length+" "+x[1].length+" "+x[0][1].length);

输出: 5 8 10


我对更高维度不确定,所以我进行了测试:对于一个四维数组:System.out.println(x.length+" "+x[1].length+" "+x[0][1].length+" "+x[0][0][1].length);,因此,要获取n>2n维数组中第i行的长度(元素数量),可以输入以下字符:<arrayname>后跟随n-2个以下字符:[0]后跟[1].length - a.t.

7

Java有“不规则”的多维数组,这意味着你的二维数组中每一行可以有不同数量的组件。如果你可以假设每一行都有相同数量的组件,那么可以使用以下方法:

pathList[0].length;

否则,您将不得不进行迭代:
int maxRowLength = 0;
for (int i = 0; i < pathList.length; i++) {
    if (maxRowLength < pathList[i].length) {
        maxRowLength = pathList[i].length;
    }
}

4

对于二维数组:

int x[][] = new int[6][12];
System.out.println(x.length + " " + x[1].length);

输出:6 12


2

pathList.length 表示行数。这意味着对于 int[6][4],它将输出 6。 pathList[i].length 表示第 i 行中的列数。由于 int[6][4] 可以看作是一个矩形,因此它将始终输出 4。


1
在Java中,我们可以定义称为多维数组的数组。通过数组的数组,我们指的是我们数组的单个元素再次是一个数组(在Java中可以有多个长度)。要找到所有子数组大小相同的多维数组的长度,我们可以使用以下代码:
int[][]a=new int[3][3];//let a[][] be my array
a.length will work.   //a is an object of proxy class and length is its property.

然而,如果您有不同大小的子数组,则必须进行迭代。
for(i=0;i<a.length;i++)
        int cur_size=a[i].length;

0
在Java中,我们不能像一维数组那样使用Length字段。但是只需编写几行代码即可解决此问题。首先,您需要知道多维数组中Length字段的输出是行数。也就是说,当您有以下数组时:
int[][] numbers = {{1,2,3,4,2,6},{4,5,6,7}};
System.out.println(numbers.length);
的结果是2,因为您有2行。因此,您应该使用这个方法来解决这个问题。例如:
public class Main {

public static void main(String[] args) {

    //Array definition
    int[][] numbers = {{1,2,3,4,2,6},{4,5,6,7}};

    //Number of array's elements
    int result = 0;

    //calculate via loop
    for(int i=0; i< numbers.length; i++){
        result +=  numbers[i].length;
    }

    //output
    System.out.println(result);
}

}


0

您可以通过使用pathlist[i].length找到“4”。

如果我错了,请纠正我,因为我是个新手,希望能更好地理解Java。以下代码可能对您有所帮助。

public class Main {

    public static void main(String[] args) {


        int num[][] = new int[1][3];
        for (int i = 0; i < num.length; i++) {
            for (int j = 0; j < num[i].length; j++) {
                num[i][j] = 10;
                System.out.println("num [" + i + "] [" + j + "] = " + num[i][j]);
            }
        }
    }
}

-1

3-D数组长度

int[][][] a = new int[2][3][7];
int length=0;
for(int[][] i:a){
    for(int j[]:i){
        length+=j.length;
    }   
}           
System.out.println(length);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接