2 回答

TA貢獻1876條經驗 獲得超5個贊
最后一次單擊您i無論如何都將值更改為-1或通過在訪問最后一個/第一個元素后months.size()添加/減去1
讓我們仔細看看這個片段:
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++;
}
第二種情況也發生了同樣的情況
你應該做什么 -i只有當當前值是強值> 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貢獻1830條經驗 獲得超9個贊
當你到達最后一個或第一個索引時,最終值將是它的-1
或maxsize
,但是當你點擊相反的按鈕時,條件仍然通過,例如當你已經在下-1
一個按鈕條件仍然通過時-1
< 比month.size()
你的條件應該是類似于 if i-1 <= 0 然后設置 i
編輯:我認為發布這個的人意味著當 ( i == months.size() - 1 ) 和你說下一個按鈕時,它工作正常,因為它是最后一個月但然后我增加了一個,那就是, i == months.size() 現在是真的。然后,當您按下 prevButton 時,僅檢查 i >= 0 而不是 i < months.size()。因此,數組索引現在越界了。您應該檢查兩種按鈕方法中的索引范圍。
添加回答
舉報