2013-12-14 111 views
2

即时添加0和1000之间的所有数字,是倍数或3和5.我只是无法添加它们。我不断收到错误消息:异常线程 “main” java.lang.IndexOutOfBoundsException:指数:468,大小:468尝试添加arraylist

我的代码

//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所以我肯定要补充的元素结合在一起......

+2

'X <= multof3.size()' - >'X assylias

+0

信息您不需要使用“继续;”当你已经结束循环 – Mani

回答

3

通过时,你必须记住,它是从0

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

索引如果有468个项目组成的数组循环在列表中,然后大小()将返回468,但最后一项指标467使用增强的for循环可以帮助避免这种类型的问题:

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

哦,好吧,我现在得到它。谢谢。 – Tloz

+0

@Tloz,只要你有一个解决方案,通过点击左边箭头按钮下方的刻度标记就不难接受答案:这就是stackoverflow的工作原理。事实上,我可以从你的个人资料中看到你不是一个通常的接受者,这可能给回答者留下不好的印象,他们可能会避免回答你的问题,因为他们的大部分帮助都没有得到承认。 – Sage

0

更改for条件<=<

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

记住指数0

0

其中只使用<而不是<=开始:

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

你试图访问元素超出了ArrayList中的最后一个。更改

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

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