Java java.lang.ArrayIndexOutOfBoundsException:0

时间:2014-10-27 04:31:40

标签: java

我正在制作一个素数发生器。但是,有一个错误: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;
    }
}

2 个答案:

答案 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的实例之前,首先运行类变量部分。