2 pièce(s) jointe(s)
Problème avec méthodes instanceof() et remove()
Bonjour !
Je suis étudiant (pas en informatique), je bosse sur un projet et je suis face à un problème que j'arrive pas à résoudre.
Voilà, je testait mon code qui met notamment en jeu des méthodes de ce type :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public static ArrayList<Ouvrage> garderRomans(ArrayList<Ouvrage> listouvr){
for (int i = 0; i < listouvr.size(); i++) {
if (listouvr.get(i) instanceof DVD){
DVD dvd = (DVD)listouvr.get(i);
listouvr.remove(dvd);
}
if (listouvr.get(i) instanceof CD){
CD cd = (CD)listouvr.get(i);
listouvr.remove(cd);
}
}
return listouvr;
} |
Et en remarquant des problèmes dans mon code, j'ai fait les tests suivants pour essayer de mieux comprendre ce qu'il se passe (en vain ^^):
La je teste si un élément d'une liste d'ouvrage (dont Roman, CD et DVD sont des sous-classes) est un DVD, et l'affiche si oui. Jusque là tout va bien :
Pièce jointe 232817
Puis je teste si un élément de cette liste est un DVD, et l'enlève de cette liste si oui. Ensuite j'affiche la liste. Je m'attends donc à ce que la liste contienne tous les ouvrages présents précédemment, sans les DVDs. Or ce n'est pas le cas.
Pièce jointe 232819
Voilà, j'attend votre aide ! :)
PS : Je tiens à préciser que je code depuis très peu de temps, et ce n'est que mon deuxième vrai "projet" depuis. J'ai donc des connaissances du langage et de la pensée informatique limitées.