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] 呢?
{
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] 呢?
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数组第二维子数组的长度
凑巧? 其实我也觉得 A[i][j] 才是对的,但是书上明明是 A[j] 这样写,但是也没出错啊,输出结果是同样的!!
你是指这样吗: 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 呢?
Java没有多维数组。 ——出自《疯狂Java 突破程序员基本功的16课》第1课LZ定义的Aarr指向的实例严格来说叫做元素为数组的数组。以多维数组的思考方式来理解Java数组,有时候会造成思维的混乱。