int mArray[][] = new int[5][];
为    int mArray[][] = new int[5][5];
    

解决方案 »

  1.   

    将int mArray[][] = new int[5][];改为int mArray[][] = new int[5][5];
    因为java不支持动态数组,如果你想使用一个动态大小的数组,可以考虑用向量。
      

  2.   

    为什么int mArray[][] = new int[5][3];不行?
      

  3.   

    你定义的二维数组可以看作是包含5个数组的数组,而每个数组大小可以不同,但必须是已存在的,也就是说你只定义了一个可以放5个数组的数组,但里面却一个数组都没放。这才会出现NullPointerException。根据你的程序来看,还是用Vector吧,它可以任意增加,删除元素。
      

  4.   

    等于多少都没关系,关键在
    for(int n= 0;n<mArray.length;n++)
    定义的数组中不能大于mArray.length
      

  5.   

    同意bigchina001(幽谷清风)的
      

  6.   

    搞什么搞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");    }    }    }
      

  7.   

    eyeieye(魔之眼)说的没错!
    上面的问题的根源在于对Java的多重数组的理解,Java没有C++的多重数组的概念。但为了一些人的习惯,也可用m[][]来表示二维数组。
    在Java中,对于每个对象来说都必须new来生成空间。
    下面我简要分析一下前面的问题:int mArray[][] = new int[5][];
       上面一句定义了一个"二维数组",其实这就是一个一维向量数组。上面只是生成了5个向量元素的空间。而对于每个向量元素的空间还没分配。所以:
               mArray[m][n] = nCounter;   
    就产生了问题。
    正确的方法eyeieye(魔之眼)已经写出来了。