简单的数组问题 int mArray[][] = new int[5][];为 int mArray[][] = new int[5][5]; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 将int mArray[][] = new int[5][];改为int mArray[][] = new int[5][5];因为java不支持动态数组,如果你想使用一个动态大小的数组,可以考虑用向量。 为什么int mArray[][] = new int[5][3];不行? 你定义的二维数组可以看作是包含5个数组的数组,而每个数组大小可以不同,但必须是已存在的,也就是说你只定义了一个可以放5个数组的数组,但里面却一个数组都没放。这才会出现NullPointerException。根据你的程序来看,还是用Vector吧,它可以任意增加,删除元素。 等于多少都没关系,关键在for(int n= 0;n<mArray.length;n++)定义的数组中不能大于mArray.length 同意bigchina001(幽谷清风)的 搞什么搞public class ArrayElementAngle { public ArrayElementAngle() { } public static void main(String[] args) { int mArray[][] = new int[5][]; int nCounter = 1; for(int m = 0;m<mArray.length;m++){ mArray[m] = new int[m+1]; for(int n= 0;n<=m;n++) { mArray[m][n] = nCounter; nCounter++; } } for(int m = 0;m<mArray.length;m++){ System.out.println("第"+m+"行->"); for(int n = 0;n<mArray[m].length;n++) System.out.println(" "+mArray[m][n]+" "); System.out.println("\n"); } } } eyeieye(魔之眼)说的没错!上面的问题的根源在于对Java的多重数组的理解,Java没有C++的多重数组的概念。但为了一些人的习惯,也可用m[][]来表示二维数组。在Java中,对于每个对象来说都必须new来生成空间。下面我简要分析一下前面的问题:int mArray[][] = new int[5][]; 上面一句定义了一个"二维数组",其实这就是一个一维向量数组。上面只是生成了5个向量元素的空间。而对于每个向量元素的空间还没分配。所以: mArray[m][n] = nCounter; 就产生了问题。正确的方法eyeieye(魔之眼)已经写出来了。 怎么知道自己电脑装了JDK没有,以及版本号 【Java】子线程如何获取主线程的列表参数? ArrayList<Object[]>排序问题 线程同步怎么这么复杂。。。 缺省适配器模式有何局限性 请教........ 找了一天 就是找不到问题 卖书,thinking in java,不诚勿扰 如何在swing做的应用程序中打开applet? 请问print和println有什么不同? 逼急了没办法,只有在这发招聘了: 招java程序员/系统分析员 selection change event for combo
因为java不支持动态数组,如果你想使用一个动态大小的数组,可以考虑用向量。
for(int n= 0;n<mArray.length;n++)
定义的数组中不能大于mArray.length
}
public static void main(String[] args) {
int mArray[][] = new int[5][];
int nCounter = 1;
for(int m = 0;m<mArray.length;m++){
mArray[m] = new int[m+1];
for(int n= 0;n<=m;n++) {
mArray[m][n] = nCounter;
nCounter++;
}
}
for(int m = 0;m<mArray.length;m++){
System.out.println("第"+m+"行->");
for(int n = 0;n<mArray[m].length;n++)
System.out.println(" "+mArray[m][n]+" ");
System.out.println("\n"); } } }
上面的问题的根源在于对Java的多重数组的理解,Java没有C++的多重数组的概念。但为了一些人的习惯,也可用m[][]来表示二维数组。
在Java中,对于每个对象来说都必须new来生成空间。
下面我简要分析一下前面的问题:int mArray[][] = new int[5][];
上面一句定义了一个"二维数组",其实这就是一个一维向量数组。上面只是生成了5个向量元素的空间。而对于每个向量元素的空间还没分配。所以:
mArray[m][n] = nCounter;
就产生了问题。
正确的方法eyeieye(魔之眼)已经写出来了。