试图添加一个arraylist

时间:2013-12-14 18:17:16

标签: java arraylist

我添加0到1000之间的所有数字,它们是倍数或3和5.我只是在添加它们时遇到了麻烦。我继续收到错误消息:线程“main”中的异常java.lang.IndexOutOfBoundsException:索引:468,大小:468

我的代码

    //Multiple of 3 and 5 up to 1000
    int total = 0;
    int answer = 0;
    ArrayList<Integer> multof3 = new ArrayList<Integer>();
    for(int i =0; i <=1000; i++){

        if(i % 3 == 0 || i % 5==0){
            multof3.add(i);
            total++;

        }else{
            continue;
        }

    }

    System.out.println(multof3);
    System.out.println(total);

    //looping through array to get sum of elements
    for(int x =0; x <= multof3.size(); x++){
        answer= answer + multof3.get(x);
    }
    System.out.println(answer);

任何人都知道原因吗?我不明白为什么它不起作用。它打印出arraylist所以我肯定应该将元素添加到一起......

4 个答案:

答案 0 :(得分:3)

循环遍历数组时,必须记住它是从0索引的。

  for(int x =0; x < multof3.size(); x++){
    answer= answer + multof3.get(x);
  }

如果列表中有468个项目,那么size()将返回468但最后一个项目位于索引467.使用增强型for循环可以帮助避免此类问题:

  for(Integer i: multof3){
       answer += i;
  }

答案 1 :(得分:0)

for条件<=更改为<

for (int x = 0; x < multof3.size(); x++) {
    answer = answer + multof3.get(x);
}

记住索引从0开始。

答案 2 :(得分:0)

仅使用<代替<=

for(int x =0; x < multof3.size(); x++){
    answer= answer + multof3.get(x);
}

答案 3 :(得分:0)

您尝试访问ArrayList中最后一个元素之外的元素。改变

for(int x =0; x <= multof3.size(); x++){

for(int x =0; x < multof3.size(); x++){