IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Problème lors de la création d'une Liste


Sujet :

Langage Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    février 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2021
    Messages : 7
    Points : 7
    Points
    7
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur en génie logiciel
    Inscrit en
    juin 2012
    Messages
    565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur en génie logiciel
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : juin 2012
    Messages : 565
    Points : 1 385
    Points
    1 385
    Par défaut
    il faut que tu crées un nouveau objet à chaque fois que tu l'ajoute dans ta liste... donc ta ligne 10 devrait être en dessous de ton while.....

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    février 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2021
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Ça a marché, merci beaucoup ! Petite question rapide pour bien comprendre d'où venait le problème : s'il m'affichait uniquement le dernier Ennemi créé, c'est parce que chaque item de la Liste pointait juste vers temp, c'est bien ça ?

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    septembre 2004
    Messages
    12 179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2004
    Messages : 12 179
    Points : 20 624
    Points
    20 624
    Par défaut
    Tout à fait.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    février 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2021
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Merci encore ! Je clos donc le sujet

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 07/04/2010, 19h15
  2. Réponses: 11
    Dernier message: 05/08/2009, 12h30
  3. Problème lors de la création d'une table
    Par xoum89 dans le forum SQL
    Réponses: 8
    Dernier message: 20/04/2009, 22h29
  4. Problème lors de la création d'une DLL?
    Par zuzuu dans le forum Windows
    Réponses: 6
    Dernier message: 04/10/2007, 10h26
  5. Réponses: 4
    Dernier message: 04/06/2007, 11h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo