0
我有一個長度爲3的數組,因此索引0,1和2.然後我有一個計數器(int c)和一個翻轉限制(int rollover = array.length)和兩個按鈕,以偵聽它們何時點擊將決定進行一個或返回一個。當你在索引0如何將數字減1並當它達到0時返回到起點?
prev.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(c!=0) {
c--;
updateLabel(pokemons[c]);
} else if(c==0) {
c = rollover;
updateLabel(pokemons[c]);
}
}
});
next.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
c = (c+1) % rollover; //increase c until the limit
if(c==rollover) {
updateLabel(pokemons[c]);
}
else if(c<rollover) {
updateLabel(pokemons[c]);
}
}
});
「下一步」按鈕的作品,但我的「上一頁」按鈕,遇到一個錯誤,但同樣的工作,當你再次點擊它。基本上我有一個顯示寵物小精靈圖片的JLabel,當我點擊next或prev時,它會調用updateLabel方法來更改JLabel並顯示數組中的下一個或上一個pokemon。任何想法如何解決prev按鈕?
就是這樣。 'rollover == pokemons.length'。最大指數是「pokemons.length - 1」。事實上,'next'回調中的這段代碼'if(c == rollover)'永遠不會被擊中。在模運算中,0 <= mod(c)<翻轉。另外,你可以像'c =(c-1)%rollover'一樣執行'prev'類似於'next'的操作;'-1%rollover'將等於'rollover - 1'。 – mkasberg
謝謝,這是它出界的問題 –