public static void main(String args[])
  {
     int i,j,k,sum=0;
 int A[][][]={{ {5,1},{6,7} },{ {9,4},{8,3} }};
 
 for(i=0;i<A.length;i++)
 {
    for(j=0;j<A[i].length;j++)
 {
    for(k=0;k<A[j].length;k++)
{
  System.out.print("A["+i+"]["+j+"]["+k+"]");
  System.out.println(A[i][j][k]);
  sum+=A[i][j][k];

}
 
 }
 
 } 
 
 System.out.println("sum="+sum);
  } 我的问题是:  for(k=0;k<A[j].length;k++)
  这里 A[j].length 与 A[i][j].length 效果一样,为什么?这里应该如何理解 A[j] 里面的这个 A ??是代表了A[i]  吗? 如果是这样,那么 A[i][j] 呢?

解决方案 »

  1.   

    三维数组转换成X,Y,Z坐标能否好理解些。
      

  2.   

    你那是凑巧
    A[j].length比如A[0].length就相当于{ {5,1},{6,7} }的length,因为有{5,1}和{6,7}两元素,所以为2A[i][j].length比如A[0][0].length就相当于{5,1}的length,因为有5和1两元素,所以也为2总之,A[j].length是A数组第一维子数组的长度,A[i][j].length是A数组第二维子数组的长度
      

  3.   


    凑巧? 其实我也觉得  A[i][j] 才是对的,但是书上明明是 A[j] 这样写,但是也没出错啊,输出结果是同样的!!
      

  4.   

    你就看成坐标xyz  其他都为了0了  不是只有一个吗  
      

  5.   


    你是指这样吗:  public static void main(String arr[])
      {
        int i,j,k;

    int Aarr[][][]={ { {1,2},{3,4} },{ {5,6},{7,8},{9,10} } };

    for(i=0;i<Aarr.length;i++)
     for(j=0;j<Aarr[i].length;j++)
       for(k=0;k<Aarr[i][j].length;k++)
        {
       System.out.print("Aarr["+i+"]["+j+"]["+k+"]");
      System.out.println(Aarr[i][j][k]);
     




      
      }
    这样好像的确如你说的一样,如果光用一个j就出错,但是为什么如果维数相同就可以直接只用一个 j  呢?
      

  6.   

    这样写是正解,上面没出错是因为Aarr[j]和Aarr[i][j]的实际长度一样(都是2)。重申一遍:
    Java没有多维数组。    ——出自《疯狂Java  突破程序员基本功的16课》第1课LZ定义的Aarr指向的实例严格来说叫做元素为数组的数组。以多维数组的思考方式来理解Java数组,有时候会造成思维的混乱。
      

  7.   

    想问 Aarr[j]和Aarr[i][j] 各自代表什么意思?长度一样为什么就可以省略掉[i]呢?