-1
为什么在以下代码段中抛出IndexOutOfBoundsException? 我似乎无法理解为什么它被抛出?为什么会抛出IndexOutOfBoundsException?
import java.util.*;
public class PrimeNumbers {
//Printing all prime numbers less than 600 using 'Sieve Method'
final static int SIZE = 600;
static ArrayList<Integer> numbers = new ArrayList<Integer>(SIZE);
public static void populateList(ArrayList<Integer> arraylist){
for(int i=0; i<SIZE; i++){
arraylist.add(i, i);
}
}
public static void filterMultiples(ArrayList<Integer> arraylist){
for(int i=0; i<SIZE; i++){
if(arraylist.get(i)%2==0 || arraylist.get(i)%3==0 || arraylist.get(i)%5==0){
arraylist.remove(i);
}
}
}
public static void main(String[] args){
populateList(numbers);
filterMultiples(numbers);
System.out.println(numbers);
}
}
堆栈跟踪:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 300, Size: 300
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.get(ArrayList.java:429)
at PrimeNumbers.filterMultiples(PrimeNumbers.java:17)
at PrimeNumbers.main(PrimeNumbers.java:25)