【发布时间】:2012-02-06 21:22:44
【问题描述】:
我得到了这个例外:
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个按钮并将它们存储在一个数组中,每个按钮都有一个行号和座位号。
我被卡住了,我不知道该去哪里找了..
我应该使用数组列表吗?
【问题讨论】:
-
请告诉我们 setevelger.java 文件的第 64 行
-
j == 10怎么可能是真的?? -
这并不能真正回答您的问题,但会有所帮助。你的循环中有
if(j==10)声明..;j<10;..,这意味着j 永远不会等于10。此外,除非它们在你的循环之外使用sete和rad不需要,你可以只使用@987654330 @ 和j。"rad " +(i+1)+", Sete "+(j+1));那你就不需要antallSeter++;之后的部分了 -
你能告诉我们 setevelger.java 第 64 行和第 22 行的内容吗?
-
请不要以小写字母开头你的类名(new knapp(...))。这不符合 java 命名约定,并且可以防止混淆。 ;)
标签: java arrays exception arraylist