下面是一个简单的不规则数组,语法都没有错误,但就是不能编译,请各位路过的高手帮忙看一下.....
import java.util.*;
import static java.lang.System.*;public class LotteryArray { /**
* @param args
*/
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 lotteryOdds =1;
for(int i=1;i<=k;i++)
lotteryOdds = lotteryOdds * (n-i+1)/i;
odds[n][k] = lotteryOdds;
}
for(int[] row : odds)
{ for(int odd : row)
out.printf("%4d",odd);
out.println();
}
}}编译后会出现下面提示:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at LotteryArray.main(LotteryArray.java:23)
先谢谢各位了^_^
import java.util.*;
import static java.lang.System.*;public class LotteryArray { /**
* @param args
*/
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 lotteryOdds =1;
for(int i=1;i<=k;i++)
lotteryOdds = lotteryOdds * (n-i+1)/i;
odds[n][k] = lotteryOdds;
}
for(int[] row : odds)
{ for(int odd : row)
out.printf("%4d",odd);
out.println();
}
}}编译后会出现下面提示:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at LotteryArray.main(LotteryArray.java:23)
先谢谢各位了^_^
这句怎么回事...(没等号吧)
改成k<odds[n].length
for(int k=0;k <odds[n].length;k++)
数组下标越界。