2010-10-05 4 views
0

Hy là j'ai débuté en Java il y a 3 semaines, j'ai quelques problèmes avec ce code.Impression d'un nouveau tableau de nombres premiers à partir d'un tableau aléatoire?

dans la méthode principale j'ai un tableau contenant 10 éléments. je l'ai déjà fait plusieurs méthodes pour vous

public static void println(int[] array) ------ imprimer et tableau

public static boolean isPrime(int el) ----------- test principal. renvoie true ou false

public static int countPrimes(int[] array) --- renvoie le nombre de nombres premiers dans le tableau.

c'est le tableau

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

la méthode im des problèmes avec est:

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; 
    } 

il retourne un tableau de 7 chiffres comme celui-ci {7,5,7,2,11,5,2} mais que je reçois le tableau original de retour .

qu'est-ce que je fais mal.

+0

Je ne vois pas où vous utilisez la matrice temporaire? Cette condition "array [i]% array [i] == 1" sera toujours évaluée à true. La logique semble défectueuse – rkg

Répondre

1

Quel est le but de ce test?

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

array[i] % array[i] sera toujours 0 alors votre test renvoie toujours Vrai.

Ne devriez-vous pas plutôt utiliser ce qui suit?

if (isPrime(array[i])) 

Edit: Et comme le souligne Ravi, vous ne jamais utiliser votre tableau de température! Je pense que vous devez changer array[i] = array[j]; à temp[j] = array[i]; lorsque le test if corrigé est vrai.

+0

Merci les gars, j'ai corrigé le primetest et le tableau "temp [j]" ainsi. je travaille parfaitement maintenant –

Questions connexes