【发布时间】:2015-02-19 06:50:30
【问题描述】:
我正在编写一个程序来查找素数。我将素数和所有正整数(现在直到 100)存储在两个 ArrayList<Integer> 中。代码如下:
import java.util.ArrayList;
public class PrimeNumbers {
static ArrayList<Integer> num = new ArrayList<Integer>();
static ArrayList<Integer> prime = new ArrayList<Integer>();
public static void main(String[] args) {
prime.add(2);
prime.add(3);
prime.add(5);
for (int z = 1; z<=100; z++){
num.add(z);
}
outer: for (int a = 1; a <=num.size(); a++){
inner: for (int b = 1; b <=prime.size(); b++){
if (num.get(a)%prime.get(b) != 0){//line 14
if (prime.indexOf(b)+1 == prime.size()){
prime.add(a);
continue outer;
}
else
continue inner;
}
else
continue outer;
}
}
System.out.println(prime);
}
}
但是当我运行程序时,会出现这些错误:
线程“主”java.lang.IndexOutOfBoundsException 中的异常:索引:3,大小:3 在 java.util.ArrayList.rangeCheck(ArrayList.java:653) 在 java.util.ArrayList.get(ArrayList.java:429) 在 PrimeNumbers.main(PrimeNumbers.java:14)
出了什么问题?
【问题讨论】:
-
您可能对我的简短java debugging tutorial 感兴趣。我什至以 IndexOutOfBoundsException 为例。此外,您可能不应该使用 goto(继续 x)。
-
转到继续?
-
是的,正如您正在使用的定向继续,以及标签。它或多或少是一个遗物。
-
你能告诉我另一种方式吗?
-
是的,您只需使用
continue和break并编写您的代码,以便与它们一起使用。
标签: java arraylist indexoutofboundsexception