大家看看为什么这段程序会抛异常啊public void toNumHangHui(int n){
int[][] num = new int[n][];
for(int i = 0; i < n;i++){
num[i][i] = 1; //输出对角线上的1
num[i][0] = 1; //输出第一列上的1
}
for(int i = 2; i < n;i++){ //求其他列上的数值
for(int j = 1; j < i ; j++){
num[i][j] = num[i - 1][j - 1] + num[i - 1][j];
}
}
for(int i = 0; i< n; i++){ //全部输出
for(int j = 0; j < 10; j++){
System.out.print(num[i][j] + "\t");
}
System.out.println();
}
}抛出的异常是
Exception in thread "main" java.lang.NullPointerException

解决方案 »

  1.   

     int[][] num = new int[n][]; // 数组第二维的大小还没定义呢
      

  2.   

    int[][] num = new int[n][];数组都没初始化完整···
      

  3.   

    int[][] num = new int[n][];
    改为int[][] num = new int[n][n];
      

  4.   

    public static void main(String[] args) {
    // TODO 自动生成方法存根
        int n = 10 ;
        int[][] num = new int[n][n];
        if(n ==1){
         num[0][0] = 1;
         System.out.println(num[0][0]);
        }
        if(n != 1){
         for(int i = 0; i < n;i++){
         num[i][0] = 1;     
         num[i][i] = 1;                                
         }
         for(int i = 2; i < n;i++){            
         for(int j = 1; j < i ; j++){
         num[i][j] = num[i - 1][j - 1] + num[i - 1][j];
         }
         }
         for(int i = 0; i< n; i++){         
         for(int j = 0; j < n; j++){
         if(num[i][j] == 0){
         continue;
         }
         System.out.print(num[i][j] + "\t");
         }
         System.out.println();
         }
          }
        }
      

  5.   

    下课了,没时间看了,不过,应该和抛出异常没什么关系吧,是程序代码有问题????我没看到有try{}catch{}????
      

  6.   

    public void toNumHangHui(int n)
    {
        int[][] num = new int[n][];
        for(int i = 0; i < n;i++)
        {
         num[i]=new int[i+1];
            num[i][i] = 1;                    //输出对角线上的1
            num[i][0] = 1;                    //输出第一列上的1
        }
        for(int i = 2; i < num.length ;i++)
        {            //求其他列上的数值
            for(int j = 1; j < num[i].length -1 ; j++)
            {
                num[i][j] = num[i - 1][j - 1] + num[i - 1][j];
            }
        }
        for(int i = 0; i< num.length ; i++)
        {            //全部输出
            for(int j = 0; j < num[i].length ; j++)
            {
                System.out.print(num[i][j] + "\t");
            }
            System.out.println();
        }
    }
      

  7.   

    可以了!十分感谢Inhibitory 和 matchlist的指点  感谢楼上的各位!//杨辉三角
    public void toNumHangHui(int n){
    int[][] num = new int[n][n];
    for(int i = 0; i < n ;i++){
    num[i][i] = 1; //输出对角线上的1
    num[i][0] = 1; //输出第一列上的1
    }
    for(int i = 2; i < n;i++){ //求其他列上的数值
    for(int j = 1; j < n ; j++){
    num[i][j] = num[i - 1][j - 1] + num[i - 1][j];
    }
    }
    for(int i = 0; i< n; i++){ //全部输出
    for(int j = 0; j < n; j++){
    if(num[i][j] == 0)  
    continue;
    System.out.print(num[i][j] + "\t");
    }
    System.out.println();
    }
    }