jeremieT
Messages postés14Date d'inscriptionmercredi 18 février 2009StatutMembreDernière intervention10 juin 2009
-
12 mai 2009 à 16:16
dmk04
Messages postés206Date d'inscriptionsamedi 29 octobre 2005StatutMembreDerniè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");}
dmk04
Messages postés206Date d'inscriptionsamedi 29 octobre 2005StatutMembreDerniè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(".")))
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.