2017-02-07 20 views
0

Я пытаюсь получить все простые числа от 1 до 10 и затем помещать их в массив. Я получаю ошибку ArrayIndexOutOfBoundsException.ArrayIndexOutOfBoundsException issue

Я получаю это, потому что первый цикл for имеет starNum <=10, а у массива технически еще нет значений?

Я не уверен, как еще фраза заявление пока еще имеет диапазон от 1 до 10. Помощь приветствуется.

public static void main(String[] args) { 

    int [] array = new int[args.length]; 

    for (int starNum = 1; starNum <= 10; starNum ++){ 
     boolean isPrime = true; 
     int list = Integer.parseInt(args[starNum]); 

     for (int i = 1; i*i <= starNum; i++) { 
      if (starNum % 2 == 0) { 
       isPrime = false; 
      } 
     } 
     if (isPrime) { 
      System.out.println(starNum); 
      array[starNum] = list; 
      System.out.println(array); 
     } 
    } 
} 
+0

при условии 'arg.length = 10' ваша ошибка состоит в том, что вы начинаете массив с индексом '1', но они основаны на' 0' и должны быть закодированы до 'i SomeJavaGuy

+0

Подсказка: индексирование массива начинается с '0', а не' 1'. –

ответ

0

Убедитесь, что массив индекса начинается с и последний индекс элемент длина -1.

Простая программа, чтобы найти простое число между двумя диапазонами т.е. в вашем случае (от 1 до 10) -

public static void main(String[] args) { 
    int i, flag; 
    int low = 0; 
    int high = 10; 
    int arr[] = new int[10]; 
    int index = 0; 
    while (low < high) { 
     flag = 0; 

     for (i = 2; i <= low/2; ++i) { 
      if (low % i == 0) { 
       flag = 1; 
       break; 
      } 
     } 

     if (flag == 0) { 
      arr[index] = low;//prime number array, print it to check 
      index++; 
     } 
     ++low; 
    } 
} 

обр является массив, который содержит простые числа. вы можете обеспечить минимальное значение для низкого и максимального значения до высокого.

0

У первого решения проблемы есть проблемы. Индекс

всегда начинается с 0 (ноль), а не с 1. Таким образом изменить ваш первый цикл, как показано ниже

for (int starNum = 0; starNum < args.length && starNum <= 10; starNum ++){