Comparer deux listes

Messages postés
14
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
10 juin 2009
- - Dernière réponse : cs_MoH008
Messages postés
238
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
29 septembre 2011
- 21 avril 2009 à 22:41
bonjour,
dans un projet je dois comparer deux listes de fichiers et retourner une troisième liste avec uniquement les fichiers qui sont dans la première mais pas dans la deuxième.
J'ai donc écrit une classe pour cela mais éclipse me renvoi : java.lang.NullPointerException
Pouriez vous m'aider a trouver l'erreur? apparemment c'est un indice qui pointe nul part mais je ne le trouve pas:(

public class Comparerlistes {
    static String [] listeafaire ;
    static int nb = 0;
   
    public static String[] comparateur(String[] listeDD, String[] listefiches)
    {
        int k = 0;
        for(int i=0;i<listeDD.length;i++)
        {
            for(int j=0;j<listefiches.length;j++)
            {
            if(listeDD[i]== listefiches[j])
            {
                 nb = nb+1;
            }
            }
            if(nb == 0)
            {
                listeafaire[k] = listeDD[i];
                k++;
               
            }
        }
      
    return listeafaire;   
    }
Afficher la suite 

4 réponses

Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
83
0
Merci
Salut,

Il faut que tu instancie ton tableau listeafaire :

public class Comparerlistes {

public static List<String> comparateur(String[] listeDD, String[] listefiches)
{
List<String> listeafaire = new LinkedList<String>(); // Aucun intérêt de le déclarer en static niveau classe, ca prend bien moins de ressource ici !
int nb = 0; // IDEM

int k = 0;
for(int i=0;i<listeDD.length;i++)
{
for(int j=0;j<listefiches.length;j++)
{
if(listeDD[i]== listefiches[j])
{
nb = nb+1;
}
}
/*if(nb == 0) pourquoi ne prendre que le premier ? */
listeafaire.add(listeDD[i];
}

return listeafaire;
}
Commenter la réponse de cs_DARKSIDIOUS
Messages postés
14
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
10 juin 2009
0
Merci
merci!
en fait je veux que dans le tableau retourné il n'y ait que le nom des fichiers de la première liste qui ne sont pas dans la seconde.

c'est pour cela que je met le compteur nb qui s'incrémente de 1si il y'a une correspondance. lorsque toutes les case du deuxième tableau sont parcouru si nb est toujours égal a 0 c'est que le fichier n'est pas dans la seconde et donc je le met dans le 3eme tableau.

je prefere untiliser des tableaux de string partout car je fais pleins d'operations dessus dans d'autres classes.
donc si vous avez une autre solusion n'esitez pas a me le dire:)
merci d'avance
Commenter la réponse de jeremieT
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
83
0
Merci
Je te conseille vivement d'utiliser des listes à la place de tes tableaux : c'est bien plus simple à utiliser !!!
Commenter la réponse de cs_DARKSIDIOUS
Messages postés
238
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
29 septembre 2011
0
Merci
Salut,
Darksidious a raison !!!
Mais si tu tiens vraiment à utiliser un tableau, tu peux garder le code de Darksidious et au lieu de renvoyer la liste, tu récupères sa taille, tu instancies ton tableau de string et tu le remplis des éléments contenus dans la liste puis tu renvoies le tableau.
Commenter la réponse de cs_MoH008