日期:2014-05-20  浏览次数:20758 次

请帮忙解释下这段代码(关于二维数组的疑问)?
import java.util.Random;
public class TwoDimArray{
static Random rand=new Random();
static int pRand(int mod){ //定义一个静态方法,产生随机数
return Math.abs(rand.nextInt())%mod + 1;
}
public static void main(String[] args){
int a[][]={{1,2,3},{4,5,6}}; //静态初始化int型数组
for(int i=0;i<a.length;i++){ //第9~13行,打印int型数组数据元素
for(int j=0;j<a[0].length;j++){
System.out.println("a["+i+"]["+j+"]:"+a[i][j]);
}
}
Integer a1[][]={{new Integer(1),new Integer(2)},//第14~16行,创建二维对象数组
{new Integer(3),new Integer(4)},
{new Integer(5),new Integer(6)}};
//第17~22行,打印对象数组al的数据元素
for(int i=0;i<a1.length;i++){
for(int j=0;j<a1[i].length;j++){
System.out.println("a1["+i+"]["+j+"]:"+a1[i][j]);
}
}
Integer a2[][]; //声明一个对象数组
a2=new Integer[3][]; //逐渐构造一个对象数组
for(int i=0;i<a2.length;i++){  
a2[i]=new Integer[3];
for(int j=0;j<a2[i].length;j++){
a2[i][j]=new Integer(i*j);
}
} for(int i=0;i<a2.length;i++){
for(int j=0;j<a.length;j++){
System.out.println("a2["+i+"]["+j+"]:"+a2[i][j]);
}
}
}
}
红字部分看不懂 a2[i]=new Integer[3];这是什么意思?
for(int j=0;j<a2[i].length;j++){
a2[i][j]=new Integer(i*j);
}这部分也不明白。

------解决方案--------------------
用二维矩阵动手画画就知道了 a2[i]=new Integer[3] 相当与 第i行的数组长度3

a2[i][j]=new Integer(i*j);就是具体第i行第j列赋值为i*j

矩阵学过吧 这只是二维 还有复查三维四维呢 思路都一样
------解决方案--------------------
a2=new Integer[3][]; //先搞出了1维的,每个元素都是null
然后
a2[i]=new Integer[3];//给上面1维的每个要素都付成1个长度为3的数组,循环结束2维就new好了

a2[i][j]=new Integer(i*j); //给2维的每个要素赋值 值为 i*j