Comparer deux tableaux

jeremieT Messages postés 14 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 10 juin 2009 - 12 mai 2009 à 16:16
dmk04 Messages postés 206 Date d'inscription samedi 29 octobre 2005 Statut Membre Dernière intervention 7 mars 2012 - 13 mai 2009 à 11:17
Bonjour,
J'essaye de comparer deux tableau a une dimmention.en fait je veux en prendre un premier 99999999, puis un deuxieme 99999999 et en créer un troisieme qui contient uniquement le texte qui est dans le premier tableau mais pas dans le deuxieme.    ex: dans le 1er tableaux  il y'a (batman.avi     ;    legrandbleu.avi       ;   zoro.avi;  starWars.avi )
dans le 2eme il y'a (batman.txt    ;   zoro.txt)
la classe doit donc retourner un tableau avec (legrandbleu.avi  ;  starWars.avi )
J'ai bien sur verifié que les deux premiers tableaux n'étaient pas nulls , pourtant une exeption est levée a chaque fois.

public

class Comparerlistes{

String[]

listeafaire;

public String[] comparateur(String[] listeDD, String[] listefiches){

// j'ai verif que les tableaux soient bons, ils finissent par .avi et .txt

int k = 0;

try {

for (
int i = 0; i < listeDD.
length; i++){

int nb = 0;

for (
int j = 0; j < listefiches.
length; j++){

if (listeDD[i].replace(
".avi",
"") = = listefiches[j].replace(
".txt",
"")){

nb = nb + 1;

}

}

if (nb == 0){

listeafaire[k] = listeDD[i];k = k+1;

}

}

}

catch (java.lang.NullPointerException e1){

System.

out.print(
"la liste des films a mettre a jour est vide");}

return
listeafaire;}

}

1 réponse

dmk04 Messages postés 206 Date d'inscription samedi 29 octobre 2005 Statut Membre Dernière intervention 7 mars 2012
13 mai 2009 à 11:17
Salut,

Plusieurs choses :
if (listeDD[i].replace(
".avi",
"") == listefiches[j].replace(
".txt",
""))

Imaginons que le titre de ton film contienne ".avi" ou ".txt" ailleurs que dans l'extension, ton code ne donnera pas le resultat voulu.
Imaginons encore, que fichiers videos ne soit pas tous des ".avi", ton code ne marchera pas comme voulu.

Je pense par contre, que l'on peut imaginer que tous tes fichiers auront une extension, il serait donc préférable d'utiliser une code dans ce goût là :
if(listeDD[i].substring(0, listeDD[i].lastIndexOf(".")) == listefiches[j].substring(0, listefiches[i].lastIndexOf(".")))

Ensuite, ce que tu veux faire existe déjà nativement : http://java.sun.com/j2se/1.4.2/docs/api/java/util/AbstractCollection.html#removeAll(java.util.Collection)
Je pense que l'on peut utiliser cette méthode sur un String[].

Tout ce que tu as à faire c'est faire des copies de tes listes qui contiendront les noms des fichiers sans les extensions (si tu ne peux pas utiliser la méthode removeAll sur un String[] stocke les copies de tes listes dans des ArrayList<String>) et utiliser la méthode "removeAll" comme il faut.

Pour finir, je pense que ta NullPointerException vient du fait que tu n'as pas alloué ton String[] listeafaire.

A+
0
Rejoignez-nous