我刚接触Java编程,试图解决一些Project Euler问题,但不知何故卡在了第一个问题上……
我正在尝试计算0到1000范围内3和5的倍数的总和……
我的代码如下:
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);
}
}我得到的错误如下:
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的情况下抛出异常的原因是什么?
我很抱歉,如果这些问题太基本了,但我只是进入编程,所以我真的很感激任何帮助,我可以得到!
非常感谢您提前!:)
发布于 2016-05-01 20:21:24
我认为错误在这里:
while (n < multiples.size()){
sum += multiples.get(i);//Here
System.out.println(sum);
}您可以检查n是否小于大小,但您在i处得到的数字可能小于或不小于大小。您可以将其更改为:
sum += multiples.get(n);https://stackoverflow.com/questions/36966533
复制相似问题