我正在制作一个素数发生器。但是,有一个错误:java.lang.ArrayIndexOutOfBoundsException:0在第20行(我将数字放入数组)。我该如何解决这个问题?为什么它会给我这个错误?
public class Generator {
int min;
int max;
int[] primes = new int[max];
public Generator(int minimum, int maximum) {
min = minimum;
max = maximum;
}
public void generate() {
int index = 0;
for(int i = min; i <= max; i++) {
if(isPrime(i)) {
primes[index] = i;
index++;
}
}
}
private boolean isPrime(int n) {
for(int i = 2; i < n; i++) {
if(n % i == 0) {
return false;
}
}
return true;
}
public int[] get() {
return primes;
}
}
答案 0 :(得分:4)
实例化Generator
类
int max; // max become 0
int[] primes = new int[max]; // then size of array become zero
然后,对于大小为零的数组,没有索引0
。
您可以在Generator
class
int min;
int max;
int[] primes
public Generator(int minimum, int maximum) {
min = minimum;
max = maximum;
primes = new int[maximum];
}
答案 1 :(得分:0)
您需要在构造函数中实例化数组,因为在创建Generator的实例之前,首先运行类变量部分。