2011-03-12 83 views
0

我对概念有些困惑......当打印出[20] [20]的二维数组长度时。答案是120 ...但无法弄清楚......它是如何计算的?什么是和如何计算2D,3D阵列的长度?

+2

我不知道,它是如何计算的?介意分享代码? – Mehrdad 2011-03-12 07:37:23

+0

刚刚使用内置的.lenght函数....答案是120 ...试图找出“为什么它打印120而不是20”。 – 2011-03-12 07:46:46

+2

如果你真的已经用[20] [20]构造它,它就不会。我怀疑这是一个诊断问题。请参阅我的答案,了解它打印的示例20.如果您可以提供类似的简短但完整的打印120的程序,请执行此操作。 – 2011-03-12 07:50:32

回答

2

[20] [20]的二维数组的长度实际上只有20 ...因为二维数组只是一个数组数组。 “外”数组是长度为20的阵列,其中每个元素是长度20

public class Test 
{ 
    public static void main(String[] args) 
    { 
     int[][] array = new int[20][20]; 
     System.out.println(array.length); // Prints 20 
    } 
} 

如果要找到数的多维阵列的元件的阵列,则将需要总结每个子阵列的长度。例如:

public int findTotalLength(int[][] array) 
{ 
    int sum = 0; 
    for (int[] subArray : array) 
    { 
     sum += subArray.length; 
    } 
    return sum; 
} 

请注意,可以不只是采取第一子阵列的长度,并通过乘以“外”的长度,作为其他的子阵列可以具有不同的长度。 (也可能有null引用,上面的代码没有试图检测到。)

-1

len = rows * columns(对于2D阵列) 您可以猜测为3D 2D数组仅适用于程序员概念,内存中的所有数据都以串行方式存储