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

avec Java Discussion :

Problème d'affichage d'une liste.


Sujet :

avec Java

  1. #1
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2019
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2019
    Messages : 37
    Points : 40
    Points
    40
    Par défaut Problème d'affichage d'une liste.
    Bonjour à toutes et à tous,

    afin de créer un garage, je rajoute des voitures. Le problème est le suivant : sur la console ma liste reprend à chaque fois les éléments précédents. Je comprends pourquoi mais je ne sais pas comment faire pour avoir ma liste normalement constituée.

    Voici le main :
    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
    public class ZERO_TEST_1 {
     
     
        public static void main (String[] args) {
     
            Garage garage = new Garage();
            System.out.println (garage);
     
            Vehicule lag1 = new Lagouna();
            lag1.setMoteur(new MoteurEssence("150 Chevaux", 10256d));
            lag1.addOption(new GPS());
            lag1.addOption(new SiegeChauffant());
            lag1.addOption(new VitreElectrique());
     
            garage.addVoitures(lag1);
     
             Vehicule A300B_2 = new A300B();
             A300B_2.setMoteur(new MoteurElectrique("1500 W", 1234d));
             A300B_2.addOption(new Climatisation());
             A300B_2.addOption(new BarreDeToit());
             A300B_2.addOption(new SiegeChauffant());
     
             garage.addVoitures(A300B_2);
     
             Vehicule d4_1 = new D4();
             d4_1.setMoteur(new MoteurDiesel("200 Hdi", 25684.80d));
             d4_1.addOption(new BarreDeToit());
             d4_1.addOption(new Climatisation());
             d4_1.addOption(new GPS());
     
             garage.addVoitures(d4_1);
     
             Vehicule lag2 = new Lagouna();
             lag2.setMoteur(new MoteurDiesel("500 Hdi", 456987d));
             garage.addVoitures(lag2);
     
     
        }
     
    }
    La classe garage
    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
    import java.util.ArrayList;
    import java.util.List;
    import java.util.ListIterator;
     
    public class Garage {
     
       String str;
       List <Vehicule> voitures = new ArrayList<Vehicule>();
     
       public Garage(){
     
       }
     
       public String toString(){
           String str = "***************************************\n"
                        + "Garage"
                      +  "*************************************";
          return str;
       }
     
      public void addVoitures(Vehicule nouvellevoiture){
     
          voitures.add(nouvellevoiture);
     
         listeVoitures();
      } 
     
     
     
       public void listeVoitures(){
     
        ListIterator Li = voitures.listIterator();
     
        while (Li.hasNext())
          System.out.println(Li.next());
     
    }   
    }
    Je vois bien que l'appel à la méthode listeVoitures ne se situe pas au bon endroit, mais je ne vois pas où la placer pour obtenir une liste cohérente.

    En effet, voici ce que j'obtiens sur la console :

    ***************************************
    Garage
    *************************************
    Voiture RENO : Lagouna Moteur ESSENCE 150 Chevaux(23123.0 €)
    Voiture RENO : Lagouna Moteur ESSENCE 150 Chevaux(23123.0 €)
    Voiture PIGEOT : A300B Moteur ELECTRIQUE 1500 W(28457.0 €)
    Voiture RENO : Lagouna Moteur ESSENCE 150 Chevaux(23123.0 €)
    Voiture PIGEOT : A300B Moteur ELECTRIQUE 1500 W(28457.0 €)
    Voiture TROEN : D4 Moteur DIESEL 200 Hdi(25147.0 €)
    Voiture RENO : Lagouna Moteur ESSENCE 150 Chevaux(23123.0 €)
    Voiture PIGEOT : A300B Moteur ELECTRIQUE 1500 W(28457.0 €)
    Voiture TROEN : D4 Moteur DIESEL 200 Hdi(25147.0 €)
    Voiture RENO : Lagouna Moteur DIESEL 500 Hdi(23123.0 €)

    Voilà, par avance merci de me tirer de ce problème.
    A bientôt.

    Vaca38.

  2. #2
    Membre confirmé
    Avatar de Jacques Beauregard
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2015
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 231
    Points : 595
    Points
    595
    Par défaut
    Bonjour,

    Je te conseillerais d'abord de rester "unitaire" sur les méthodes que tu crées dans la classe Garage.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public void addVoitures(Vehicule nouvellevoiture){
     
    voitures.add(nouvellevoiture);
    listeVoitures();
     
     }
    Cette méthode ne devrait pas gérer la liste des voitures dans ton garage, mais simplement l'ajout d'une voiture (à renommer "addVoiture")
    Le résultat que tu obtiens est cohérent avec ton code !
    Dans ton main tu fais appel à 4 reprises à la méthode addVoitures(...) et comme "addVoitures(...)" fais appel à "listeVoitures(...)" tu recharges à chaque fois l'ensemble de tes éléments !
    Pour comprendre ce que je dis ^^ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    garage.addVoitures(lag1);
    te génère la sortie : Voiture RENO : Lagouna Moteur ESSENCE 150 Chevaux(23123.0 €)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    garage.addVoitures(A300B_2);
    va te générer la sortie :
    Voiture RENO : Lagouna Moteur ESSENCE 150 Chevaux(23123.0 €)
    Voiture PIGEOT : A300B Moteur ELECTRIQUE 1500 W(28457.0 €)

    Du coup tu visualises en double la voiture RENO dans la console !

    Tu devrais donc créer une méthode de visualisation globale de tes voitures dans ton garage que tu appelles dans ton main après avoir tout ajouté par exemple.
    Il ne faut jamais prendre les gens pour des cons, mais il ne faut pas oublier qu'ils le sont...

    Le guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Novembre 2006
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2006
    Messages : 503
    Points : 1 332
    Points
    1 332
    Par défaut
    Citation Envoyé par Jacques Beauregard Voir le message
    Tu devrais donc créer une méthode de visualisation globale de tes voitures dans ton garage que tu appelles dans ton main après avoir tout ajouté par exemple.
    Euh ... elle existe ... listeVoitures(). C'est correct!

    Mais chaque fois que tu ajoutes une voiture, tu remontres toute la liste! listeVoitures() à retirer de la méthode addVoitures().
    C'est seulement à la fin du main() que tu devrais garage.listeVoitures().

    La seule utilité de l'appel de listeVoitures() serait, pendant les tests si, par exemple, tu triais ta liste ou que tu insérerais une voiture avec exactement les mêmes paramètres (à rejeter ou traiter). Une méthode removeVoiture() serait intéressante!

  4. #4
    Membre confirmé
    Avatar de Jacques Beauregard
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2015
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 231
    Points : 595
    Points
    595
    Par défaut
    Citation Envoyé par boijea Voir le message
    Euh ... elle existe ... listeVoitures(). C'est correct!
    Oui exact j'ai fumé un petit coup !

    Je voulais surtout mettre le point sur la raison d'avoir obtenu une liste incohérente ici.
    Il ne faut jamais prendre les gens pour des cons, mais il ne faut pas oublier qu'ils le sont...

    Le guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2019
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2019
    Messages : 37
    Points : 40
    Points
    40
    Par défaut Problème d'affichage d'une liste.
    Bonjour à toutes et à tous,

    c'est OK, suis-je bête !!

    J'ai en effet mis l'instruction garage.listeVoitures() à la fin du main, et maintenant cela fonctionne comme je voulais !!

    Merci beaucoup à vous Jacques Beauregard et boijea...

    Maintenant il faut que je fasse afficher cette liste dans un fichier .txt au fur et à mesure de l'ajout des voitures. Je sens que ça va pas être triste...

    Je risque bien encore d'appeler au secours...

    Dans tous les cas encore merci et.....à la prochaine !

    Tchao tchao !!

  6. #6
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Novembre 2006
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2006
    Messages : 503
    Points : 1 332
    Points
    1 332
    Par défaut
    Citation Envoyé par Vaca38 Voir le message

    Maintenant il faut que je fasse afficher cette liste dans un fichier .txt au fur et à mesure de l'ajout des voitures. Je sens que ça va pas être triste...

    Je risque bien encore d'appeler au secours...
    C'est très facile en utilisant par exemple un fichier délimité qu'il faudra relire à chaque fois. La référence Web est cvs.

    Perso je passerais très vite à la vitesse supérieure: mettre ces voitures dans une base de données.
    Une base de données sous SQLite, c'est très facile. C'est un fichier unique sans grosse installation comme mySQL.
    Alors il faudra se mettre au SQL ... trop cool!
    Dans les livres que j'ai écrit pour le C++ ou Java ... j'ai toujours inclus un ou deux chapitres sur les bases de données et JDBC pour Java.
    Cela fait partie des bases essentielles d'un bon programmeur et essentiel pour un projet "Garage".
    Bon travail.

  7. #7
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2019
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2019
    Messages : 37
    Points : 40
    Points
    40
    Par défaut Problème d'affichage d'une liste.
    Bonjour boijea,

    oui, c'est une très bonne idée de passer aux bases de données.

    Je vais m'y atteler de suite.

    Bye bye.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 26/05/2008, 16h41
  2. Problème d'affichage avec une liste à puces
    Par Maxence45 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 09/07/2007, 21h09
  3. Problème d'affichage d'une liste déroulante sous IE
    Par devdebutante dans le forum Balisage (X)HTML et validation W3C
    Réponses: 11
    Dernier message: 09/07/2007, 15h29
  4. [MySQL] problème d'affichage dans une liste
    Par bromlecornu dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 23/05/2007, 16h08
  5. Problème d'affichage d'une liste déroulante
    Par licorne dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 05/09/2006, 13h07

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