我得到这个异常:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 100
at Vindu.<init>(setevelger.java:64)
at setevelger.main(setevelger.java:22)
当我运行此代码时:
public knapp seter[]=new knapp[100]; //knapp means button
int rad=0; //rows
int sete=0; //seats
int antallSeter=0; //number of seats
for (int i=0;i<10;i++){
for (int j=0;j<10;j++){
seter[antallSeter]= new knapp("Rad "+(rad+1)+", Sete "+(sete+1));
seter[antallSeter].setBackground(Color.GREEN);
add(seter[antallSeter]);
antallSeter++;
if(j==10){
sete=0;
}else{
sete++;
}
}
rad++;
}
//creates an eventlistener
Knappelytter lytteren = new Knappelytter();
seter[antallSeter].addActionListener(lytteren);
pack();
如果我这样做:
public knapp seter[]=new knapp[120]; //knapp means button
我收到此错误:
Exception in thread "main" java.lang.NullPointerException
at Vindu.<init>(setevelger.java:64)
at setevelger.main(setevelger.java:22)
这两个错误都是在运行时创建窗口时出现的。
因此,代码应该创建 100 个按钮并将它们存储在一个数组中,每个按钮都有一个行号和座位号。
我被困住了,我不知道该往哪里看。
我应该使用数组列表吗?
最佳答案
在 for 循环中,antalSetter 在上一个循环中增加到 100 - 第一个异常(exception),如果将数组长度增加到 120 - 您将访问索引 100 处的 null 元素。
关于Java:数组索引越界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9167450/