Exception in thread "main" java.lang.NullPointerException
at LotteryArray.main(LotteryArray.java:14)
书上的例子,编译没问题,运行时报错如上
public class LotteryArray
{
public static void main(String[] args)
{
final int NMAX=10;
//allocate triangular array
int[][] odds=new int[NMAX+1][];
for(int n=0;n<NMAX;n++)
odds[n]=new int[n+1];
//fill trangular array
for(int n=0;n<odds.length;n++)
for(int k=0;k<odds[n].length;k++)
{
/*
copute binomial coefficient
n*(n-1)(n-2)*...*(n-k+1)
-------------------------
1*2*3*4*..............k
*/
int lotteryOdds=1;
for(int i=1;i<=k;i++)
lotteryOdds=lotteryOdds*(n-i+1)/i;
odds[n][k]=lotteryOdds;
}
//print triangular array
for(int[] row:odds)
{
for(int odd:row)
System.out.printf("%4d",odd);
System.out.println();
}
}
}
at LotteryArray.main(LotteryArray.java:14)
书上的例子,编译没问题,运行时报错如上
public class LotteryArray
{
public static void main(String[] args)
{
final int NMAX=10;
//allocate triangular array
int[][] odds=new int[NMAX+1][];
for(int n=0;n<NMAX;n++)
odds[n]=new int[n+1];
//fill trangular array
for(int n=0;n<odds.length;n++)
for(int k=0;k<odds[n].length;k++)
{
/*
copute binomial coefficient
n*(n-1)(n-2)*...*(n-k+1)
-------------------------
1*2*3*4*..............k
*/
int lotteryOdds=1;
for(int i=1;i<=k;i++)
lotteryOdds=lotteryOdds*(n-i+1)/i;
odds[n][k]=lotteryOdds;
}
//print triangular array
for(int[] row:odds)
{
for(int odd:row)
System.out.printf("%4d",odd);
System.out.println();
}
}
}
{
for(int odd:row)
System.out.printf("%4d",odd);
System.out.println();
}
}
}
这个东西好像不对
应该是int[][] odds=new int[NMAX][];
多申请了内存
for(int n=0;n<NMAX;n++)改成 n<NMAX+1
谁有更经典的关于数组的实例?
int[][] odds=new int[NMAX+1][]; for(int n=0;n<NMAX;n++)
odds[n]=new int[n+1];
这里创建了一个NMAX + 1长度数组,但是赋值的时候只赋值到odds[NMAX - 1],并没有赋值odds[NMAX],所以在下面的代码中调用odds[NMAX].length的时候会报出异常