2016-02-06 4 views
0

У меня возникли проблемы с 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

Пожалуйста, добавьте тег языка. – Adriaan

ответ

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].

Смежные вопросы