我写了一些代码,一步一步地将大量图片加载到imageview中。但如果我运行代码我得到索引超出限制异常:索引16无效,大小为15
这是我的代码
(define x (cons 3 4))
(car x)
拜托,你能帮我修理一下我的代码吗?
答案 0 :(得分:0)
当size等于15时,最后一个元素索引为14,因为第一个元素的索引始终为0。
答案 1 :(得分:0)
试试这个,for循环运行一次,因为数组从0开始而不是1: 编辑:我不确定你要做什么,我不明白为什么你使用temp而不是循环的当前[i]值。试试这个,如果没有,我不确定......
int steps = 5;
for (int j = 0; j < (imageUrl.size() - 1); j++) {
if (imageUrl.size() < steps) {
for (int i = 0; i < (imageUrl.size() - 1); i++) {
buildPicture(imageUrl.get(i));
imageUrl.remove(i);
}
} else if (imageUrl.size() >= steps) {
for (int i = 0; i < steps; i++) {
buildPicture(imageUrl.get(i));
imageUrl.remove(i);
i++;
}
}
}
答案 2 :(得分:0)
假设imageUrl的大小为24,就像上面的评论一样。您获得了一个越界异常,因为tmp最终会变成一个大于24的值,当您尝试调用imageUrl.get(tmp)
时,您正试图获取一个不会出现的元素#39; t存在,因此抛出了异常。
我不完全确定你在这里尝试做什么,但我希望这会有所帮助。
答案 3 :(得分:0)
关于发布MCVE或SSCCE请求背后原因的简短演示。像MCVE一样:
public static void main(String[] args){
//use a variable instead of imageUrl.size()
int imageUrlsize = 15;
int steps = 5;
int tmp = 0;
for (int j = 0; j < imageUrlsize; j++) {
if (imageUrlsize < steps) {
for (int i = 0; i < imageUrlsize; i++) {
System.out.println("imageUrlsize < steps " + tmp);
tmp++;
}
} else if (imageUrlsize >= steps) {
for (int i = 0; i < steps; i++) {
System.out.println("imageUrlsize >= steps "+ tmp);
tmp++;
}
}
}
}
清楚地表明,imageUrl
大小为15 tmp
增长到74。