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()。因此,数组索引现在越界了。您应该检查两种按钮方法中的索引范围。
添加回答
举报