数组索引超出了eratosthenes的筛选范围

时间:2016-02-06 19:47:32

标签: arrays indexoutofboundsexception

我遇到了ArrayIndexOutOfBounds问题。 我是编码的新手,我不完全理解这个问题,我无法修复它。任何帮助表示赞赏。

public class Primes {

public static void main(String[] args) {

final int SIZE = 10000;
        boolean[] numberIsPrime = new  boolean[SIZE];
        int rowCounter = 0;

        for( int index = 1; index <= SIZE; index++) {

            numberIsPrime[index] = true;
        }

        for( int index = 2; index <= SIZE; index++) {

            if( numberIsPrime[index] = true){

            for( int i = index; i <= SIZE; i++){

                numberIsPrime[index * i] = false;
            }
        }
    }
    for( int index = 1; index <= SIZE; index++){
        if( numberIsPrime[index] = true){   
            System.out.println(index + "  ");
            rowCounter++;
            if( rowCounter == 10){
                System.out.println();
            }
        }
    }   
   }
 }

1 个答案:

答案 0 :(得分:0)

您应该使用您正在使用的语言标记问题,但我会假设它是Java。问题是

    boolean[] numberIsPrime = new  boolean[SIZE];
    ...
    for( int index = 1; index <= SIZE; index++) {

        numberIsPrime[index] = true;
    }

第一行将numberIsPrime声明为大小为10000的数组。这意味着您可以访问numberIsPrime[0], numberIsPrime[1], ... numberIsPrime[9999]。您无法访问numberIsPrime[10000]