的數組索引我得到這個異常:的Java:邊界
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個按鈕並將它們存儲在一個數組中,並且每個按鈕都有一個行和座位號。
我堅持,我不知道去哪裏找了..
我應該可能使用ArrayList?
請告訴我們在文件setevelger.java中是第64行 – 2012-02-06 21:27:48
「j == 10」怎麼會是真的? – Gevorg 2012-02-06 21:30:30
這不是真的回答你的問題,但它會有所幫助。你的循環中有'if(j == 10)',表示'..; j <10; ..'這意味着j永遠不會等於10.另外,除非它們在你的循環之外使用'sete'和'rad'不需要,你可以使用'i'和'j'。 ''rad「+(i + 1)+」,Sete「+(j + 1));'那麼你不需要'antallSeter ++之後的部分;' – Shaded 2012-02-06 21:31:43