从随机数组中打印一个新的素数数组?

时间:2010-10-05 17:15:36

标签: arrays methods static primes

我有一个初学者在3周前开始java,我有这个代码的一些问题。

在main方法中我有一个包含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 个答案:

答案 0 :(得分:1)

此测试的目的是什么?

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

array[i] % array[i]将始终为0,因此您的测试始终返回True。

你不应该使用以下内容吗?

if (isPrime(array[i]))

编辑: 正如拉维指出的那样,你永远不会使用你的临时阵列!我认为当纠正的array[i] = array[j];测试为True时,您需要将temp[j] = array[i];更改为if