我有一些代码引发IndexOutOfBoundsException异常烦人的问题,我真的不明白为什么。logcat指向以下代码的“ addTimetableItem”,这将无法进一步说明:
if(sortedFridayTimes.size()>0){ insertDay("Friday"); for(int i=1; i<sortedFridayTimes.size()+1;i++){ addTimetableItem(sortedFridayTimes.get(i)); } }
“ sortedFridayTimes”是一个包含我自己的“时间表条目”对象的ArrayList,我已经对其进行了排序。首先检查大小,以查看是否有任何对象,然后检查是否存在“ insertDay”,这将为标题创建一个新的textview并将其添加到布局中(这很好..)。在for循环内,想法是将arraylist中的所有对象添加到布局中。现在我知道“ addTimetableItem”代码已经通过ive测试,但是我的问题是我似乎无法从arraylist中获取最后一个对象。如果我声明for循环仅针对
"i<sortedFridayTimes.size()"
然后程序可以正常运行,但是我没有发现arraylist中存在的最后一个条目,因为我已经调试并监视了变量。如上所示,在添加“ +1”后,我现在得到了IndexOutOfBoundsException,但我真的不知道为什么。就像我说的那样,我已经调试了,而且我知道要尝试指向的arraylist中存在一个条目,但是它崩溃了。如果需要,我可以提供更多代码,但是有人有什么想法吗?
i<sortedFridayTimes.size()+1
您正在循环经过数组中的最后一个元素。为什么+1呢?
+1
如果N数组中有元素,则元素从索引0到N-1。
N
0
N-1
所以应该是:
for(int i=0; i<sortedFridayTimes.size(); i++) {