2010-10-05 48 views
0

Hy我有一個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} 

有問題的方法IM是:

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} 而是我得到的原始數組回。

我做錯了什麼。

+0

我沒有看到你在哪裏使用臨時數組?這個條件「數組[i]%數組[i] == 1」將始終評價爲真。邏輯似乎有缺陷 – rkg 2010-10-05 17:24:11

回答

1

這個測試的目的是什麼?

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

array[i] % array[i]將始終爲0,因此您的測試總是返回True。

您不應該改用以下方法嗎?

if (isPrime(array[i])) 

編輯: 正如拉維指出的那樣,你永遠不要用你的臨時陣!我認爲當校正的if測試爲真時,您需要更改array[i] = array[j];temp[j] = array[i];

+0

謝謝你們,我糾正了primetest和「temp [j]」數組。我現在完美的工作 – 2010-10-05 18:49:03