当前位置: 首页 > 面试题库 >

Android ArrayList的IndexOutOfBoundsException

晋天逸
2023-03-14
问题内容

我有一些代码引发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呢?

如果N数组中有元素,则元素从索引0N-1

所以应该是:

for(int i=0; i<sortedFridayTimes.size(); i++) {


 类似资料:
  • 我想从后端延迟加载过滤后的数据。如果我应用了一个从后端返回1个元素的过滤器(或者没有应用过滤器),那么所有的工作都很好。 如果提取的项大于1,它将开始崩溃/抛出。我使用了官方的Vaadin文档作为实现的指南。 在Stream-API的.方法中引发异常。我也知道异常的含义,试图访问值的索引是>=列表的最大大小,但我不确定如何解决这个问题。将第一个查询的限制设置为limit-1并不能解决此问题。 我想

  • 问题内容: 这是我现在正在使用我的Android应用程序处理的问题。程序在模拟器上运行正常,没有任何错误,但在运行相同操作系统的真实设备上却出现了错误。 我有一个应用程序小部件更新服务,可以更新我的小部件。此服务检查窗口小部件是否在屏幕上,否则不进行更新过程。在模拟器上工作正常。 每次必须在OnReceive方法中更新窗口小部件时,我都会在字符串变量check_intent中捕获该意图,该变量告诉

  • 问题内容: 我有一个拥有大量下载量的应用程序,并且收到很多此错误消息: 正如您在堆栈跟踪中所看到的,其中没有一行包含我的代码跟踪。为了重现这一点,我很幸运地找到了一个使用Froyo(2.2 p7)的用户,而我只是向下滚动了代码中的s 之一。经过一些随机的时间后,它只是冻结了此异常。每次在不同的时间发生。 它后面有一个,只是增加了越来越多的行。显然,当我进行“过度滚动”时会收到此错误,但我什至无法想

  • 我将替换用户在特定给定字符串中重复的单词。因此,我使用split方法将给定的字符串用空格拆分,并将其放入数组和arraylist中。 迭代通过数组并检查条件后,它是平等的,然后我删除了ArrayList。但是在删除它时,它显示索引出界异常。 此代码适用于小数组大小,但在给出大量数组大小时显示异常。我有问题,而我给字符串的数组大小为13个字。 这是我的全部代码。

  • 我的应用程序中有一堆RecyclerViews,在Fabric中看到这个异常已经有一段时间了。 堆栈跟踪: 查看更新后的stacktrace,这似乎是我的的一个问题。 适配器代码可在此处找到: https://pastebin.com/hzmkcdh5

  • 这个Java程序在试图调用组(1)时向我显示IndexOutOfBoundsExctive。如果我将替换为,那么整行将被打印...我必须做什么?