索引超出范围异常索引16无效,大小为15

时间:2016-09-26 13:12:59

标签: java for-loop indexoutofboundsexception

我写了一些代码,一步一步地将大量图片加载到imageview中。但如果我运行代码我得到索引超出限制异常:索引16无效,大小为15

这是我的代码

(define x (cons 3 4))
(car x)

拜托,你能帮我修理一下我的代码吗?

4 个答案:

答案 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)

关于发布MCVESSCCE请求背后原因的简短演示。像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。