Печать нового массива простых чисел из случайного массива? - PullRequest
0 голосов
/ 05 октября 2010

Привет, я новичок в Java, начал 3 недели назад, у меня возникли некоторые проблемы с этим кодом.

в основном методе у меня есть массив, содержащий 10 элементов. я уже сделал несколько методов, чтобы понравиться

public static void println(int[] array) ------ для печати и массива

public static boolean isPrime(int el) ----------- первичный тест. возвращает true или false

public static int countPrimes(int[] array) --- возвращает количество простых чисел в массиве.

это массив

int[] array = new int{7,5,7,2,11,-4,5,,10,2}

Метод, с которым у меня возникают проблемы:

public static int[] primesInArray(int[] array)
  {
   int n = array.length;
   int[] temp = new int[countPrimes(array)];  
   int j = 0;

   for(int i = 0; i < n; i++)
     {
       if(isPrime(array[i]))
       { 
         temp[j] = array[i];
         j= j +1;
       }
     }
     return temp;
  }

он должен вернуть массив из 7 чисел, как это {7,5,7,2,11,5,2} но вместо этого я возвращаю исходный массив.

что я делаю не так.

1 Ответ

1 голос
/ 05 октября 2010

Какова цель этого теста?

if(array[i] % array[i] == 0 || array[i] % array[i] == 1)

array[i] % array[i] всегда будет 0, поэтому ваш тест всегда возвращает True.

Разве вы не должны вместо этого использовать следующее?

if (isPrime(array[i]))

Edit: И, как указывает Рави, вы никогда не используете свой временный массив! Я думаю, вам нужно изменить array[i] = array[j]; на temp[j] = array[i];, если исправленный тест if установлен на True

...