2016-02-05 6 views
1

Я продолжаю получать ошибку, что массив выходит за пределы, и я не могу понять, что не так.Я продолжаю получать java.lang.ArrayIndexOutOfBoundsException: 500

int[] oddArray = new int[500];//holds all the odd numbers 
    int[] primeArray = new int[500];//holds all the prime numbers 
    int[] modArray = new int[500];//holds all the mod values 
    int remainder, p = 0, x = 0;   

    //fills up the oddArray & modArray 
    for(int n = 0; n < 500; n++) 
    { 
     oddArray[n] = (n * 2) + 1; 
     modArray[n] = (n* 2) + 1; 
    } 

    for(int i = 0; i < 500; i++) 
    { 

     //finds prime numbers 
     for(int n = 0 ; n < 500; n++) 
     { 
      //divides the odd numbers by the current mod value 
      remainder = oddArray[n] % modArray[x]; 

      //if remainder is not 0 it will place a value in prime array 
      if(remainder != 0) 
      { 
       primeArray[p] = oddArray[n]; 
       p++; 
      } 
     } 

     //prints out list of odds/mod/and primes side by side 
     System.out.println(oddArray[i] + " | " + modArray[i] + " | " + primeArray[p]); 
     ++x; 
    } 

Это код ошибки

1 | 1 | 0

3 | 3 | 0

Исключение в потоке "основного" java.lang.ArrayIndexOutOfBoundsException: 500 на projectprime_v1.ProjectPrime_V1.main (ProjectPrime_V1.java:41) Java Результат: 1 строить успешные (общее время: 0 секунд)

+0

Пробовал ли вы использовать отладчик для: a) определить, какая строка имеет проблему, и b) каковы значения переменных, которые вы используете для индексации массивов? –

+0

см. Обновленный ответ – Abdelhak

ответ

1

Вы никогда не сбрасываете p, так что в итоге он превысит 499 и приведет к исключению. Убедитесь, что внутри вашего цикла напишите p = 0;, чтобы сбросить его. То же самое касается x

Надеюсь, это поможет!

+0

Или в верхней части цикла. Сначала запустить его уже будет 0, но кому это нужно. – Draco18s

+0

@ Draco18s Право. Пока он сбрасывается где-то в цикле. – Spencer4134

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