java二维数组空指针异常

java二维数组有空指针异常

 public class LotteryArray {
   public static void main(String[] args) {
    final int NMAX = 10;

    int[][] odds = new int[NMAX + 1][];
    for (int n = 0; n < NMAX; n++)
        odds[n] = new int[n + 1];

    for (int n = 0; n < odds.length; n++)
        for (int k = 0; k < odds[n].length; k++) {
            int la = 1;
            for (int i = 1; i <= k; i++)
                la = la * (n - i + 1) / i;
            odds[n][k] = la;
        }
    for (int[] row : odds) {
        for (int odd : row)
            System.out.printf("%4d", odd);
        System.out.println();
       }
    }
 }

int[][] odds = new int[NMAX + 1][]; 数组最大下标NMAX
for (int n = 0; n < NMAX; n++) 这里只循环到NMAX-1,所以最后一个是null

应该是+1 循环的最后一个没有初始化,所以报空指针

谁知道判断数组时为什么用null而不用数组的属性length=0呢?