Problème lors de la création d'une Liste
Bonjour à tous !
Je suis étudiant en L2 informatique, et, en guise d'entrainement je développe un mini-jeu de combat en mode texte. Pour cela, j'ai défini une class Ennemi, ayant pour attributs un String nom, et deux int pv et degats. Je voulais faire des tests sur cette classe, où je souhaite récupérer les attributs de l'Ennemi, puis les mettre chacun de ces ennemis dans une Liste, au début je pensais partir sur une liste chaînée, je tape tranquillement mon code, fais quelques tests avec des println... Je suis plutôt content parce qu'à première vue tout va bien.
Puis, comme tout va bien, je me décide de mettre en place la LinkedList, je modifie mon code en conséquence, je fais des tests... Tout va bien, super ! Je décide maintenant d'afficher la liste complète des Ennemi, je redéfinis un toString dans la class Ennemi, puis me met en fin de code et met mon println(listEnnemi)... Et là, malheur, je vois que toute ma liste ne contient que le dernier ennemi !! Je vous mets le code et ce qu'il m'affiche pour que ce que je dis soit clair :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| package testjeu;
import java.util.*;
import java.io.*;
public class Combat {
public static void main(String[] args) {
LinkedList<Ennemi> listEnnemi = new LinkedList<Ennemi>();
Ennemi temp = new Ennemi();
int i = 0;
try {
File noms = new File("[CHEMIN CACHÉ]\\testjeu\\nomEnnemi.txt");
File pvs = new File("[CHEMIN CACHÉ]\\testjeu\\pvEnnemi.txt");
File degat = new File("[CHEMIN CACHÉ]\\testjeu\\degatsEnnemi.txt");
Scanner lecteurUn = new Scanner(noms);
Scanner lecteurDeux = new Scanner(pvs);
Scanner lecteurTrois = new Scanner(degat);
while(lecteurUn.hasNextLine() && lecteurDeux.hasNextLine() && lecteurTrois.hasNextLine()) {
temp.setNom(lecteurUn.nextLine());
temp.setPv(lecteurDeux.nextInt());
temp.setDegats(lecteurTrois.nextInt());
listEnnemi.add(i,temp);
System.out.println(listEnnemi.get(i));
i++;
}
lecteurUn.close();
lecteurDeux.close();
lecteurTrois.close();
} catch(FileNotFoundException e) {
System.out.println("Erreur");
}
System.out.println();
System.out.println(listEnnemi);
}
} |
Et voilà le résultat :
Bandit a 15 PV et fait 2 de degats
Jean-Guy a 10 PV et fait 1 de degats
Dragon a 100 PV et fait 100 de degats
[Dragon a 100 PV et fait 100 de degats, Dragon a 100 PV et fait 100 de degats, Dragon a 100 PV et fait 100 de degats]
Les données mises dans mes documents textes sont bien celles affichées ici, mais comment se fait-il que la liste ne contienne que le dernier ennemi pris ?
J'espère vraiment que quelqu'un aura la patience de m'aider, merci d'avance ! :)