2 回答

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個贊
最后一次單擊您i無論如何都將值更改為-1或通過在訪問最后一個/第一個元素后months.size()添加/減去1
讓我們仔細(xì)看看這個片段:
if (i >= 0) { // let us assume that i = 0, we are getting inside
Month month = months.get(i); // you are assigning first element of months, everything is fine
monthTextView.setText("" + month); // some data operation - irrelevant
i--; // anyway you are updating i to [i = -1]
}
// one "next" click later...
if (i < months.size()) { // condition is fine because i = -1
Month month = months.get(i); // oooops tried to access months[-1] - ERROR
monthTextView.setText("" + month);
i++;
}
第二種情況也發(fā)生了同樣的情況
你應(yīng)該做什么 -i只有當(dāng)當(dāng)前值是強(qiáng)值> 0或< month.size() - 1
if (i >= 0) {
Month month = months.get(i);
monthTextView.setText("" + month);
i = (i > 0) ? (i - 1) : 0; // for example like this
}

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超9個贊
當(dāng)你到達(dá)最后一個或第一個索引時,最終值將是它的-1
或maxsize
,但是當(dāng)你點(diǎn)擊相反的按鈕時,條件仍然通過,例如當(dāng)你已經(jīng)在下-1
一個按鈕條件仍然通過時-1
< 比month.size()
你的條件應(yīng)該是類似于 if i-1 <= 0 然后設(shè)置 i
編輯:我認(rèn)為發(fā)布這個的人意味著當(dāng) ( i == months.size() - 1 ) 和你說下一個按鈕時,它工作正常,因?yàn)樗亲詈笠粋€月但然后我增加了一個,那就是, i == months.size() 現(xiàn)在是真的。然后,當(dāng)您按下 prevButton 時,僅檢查 i >= 0 而不是 i < months.size()。因此,數(shù)組索引現(xiàn)在越界了。您應(yīng)該檢查兩種按鈕方法中的索引范圍。
添加回答
舉報(bào)