首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >索引越界异常,即使大小小于索引?

索引越界异常,即使大小小于索引?
EN

Stack Overflow用户
提问于 2016-05-01 20:16:20
回答 1查看 1.2K关注 0票数 0

我刚接触Java编程,试图解决一些Project Euler问题,但不知何故卡在了第一个问题上……

我正在尝试计算0到1000范围内3和5的倍数的总和……

我的代码如下:

代码语言:javascript
复制
import java.util.ArrayList;

public class SumOfMultiplesOf3And5 {

    public static void main(String[] args) {

    int i = 0;
    int sum = 0;
    int n = 0;
    int totalforthree =0;
    int totalforfive = 0;
    int totalforall =0;
    ArrayList<Integer> multiples = new ArrayList<Integer>();
        for (i = 0; i < 1000; i++){
            if(i % 3 == 0){
                multiples.add(i);
                totalforthree += i;
                }
            else if(i % 5 == 0){
                multiples.add(i);
                totalforfive += i;
            }
        }
        while (n < multiples.size()){
            sum += multiples.get(i);
            System.out.println(sum);
        }
    totalforall = totalforthree + totalforfive;
    System.out.println("The sum is: " + totalforall);
        }

    }

我得到的错误如下:

代码语言:javascript
复制
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1000, Size: 467
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at SumOfMultiplesOf3And5.main(SumOfMultiplesOf3And5.java:25)

我如何解决这个问题?在大小小于1000的情况下抛出异常的原因是什么?

我很抱歉,如果这些问题太基本了,但我只是进入编程,所以我真的很感激任何帮助,我可以得到!

非常感谢您提前!:)

EN

回答 1

Stack Overflow用户

发布于 2016-05-01 20:21:24

我认为错误在这里:

代码语言:javascript
复制
while (n < multiples.size()){
    sum += multiples.get(i);//Here
    System.out.println(sum); 
}

您可以检查n是否小于大小,但您在i处得到的数字可能小于或不小于大小。您可以将其更改为:

代码语言:javascript
复制
sum += multiples.get(n);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36966533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档