Java 中的多维数组长度



如何找到具有不相等索引的多维数组的长度?

例如,我有int[][] pathList = new int[6][4]

在没有实际硬编码索引的情况下,我需要找到"6"和"4"。

我可以找到带有pathList.length的 6,但如何获得"4"?

这将为您提供索引处数组的长度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;
}

这是针对三维数组的。

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

输出:5 8 10

Java 具有"

交错"多维数组,这意味着二维数组中的每个"行"可以具有不同数量的组件。如果可以假定每行具有相同数量的组件,请使用:

pathList[0].length;

否则,您将必须迭代:

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

对于 2 D 数组:-

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

输出 : 6 12

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

在java中,我们可以定义数组数组,我们称之为多维数组。数组的数组是指数组的单个elment再次是一个数组(在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;

在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);
}

}

你可以使用 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]);
            }
        }
    }
}

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);

相关内容

  • 没有找到相关文章

最新更新