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 :

Vecteur ecrase les objets antèrieurs


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Par défaut Vecteur ecrase les objets antèrieurs
    re,
    Dans mon appli, j'ai des arrets de bus, des lignes de bus (composées de n arrets) et des reseaux( composés de ligne de bus)
    Mon probleme est le suivant quand j'injecte ma seconde ligne de bus dans mon Vecteur reseau elle s'ajoute bien, mais les arrets qui la comopose remplace les arrets de la 1ere ligne de bus ajouté au préalable.
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
     public static void main(String[] args) {
            // TODO code application logic here
            int numArret;
            LigneBus uneLigne;
            Arret unArret;
            Vector listeArret = new Vector();
            Vector Reseau = new Vector();
     
            //********************1ere Ligne 
            //creation des arrets et insertion dans vecteur listeArret
            numArret = 1;
            unArret = new Arret(numArret);
            listeArret.addElement(unArret);
     
            numArret = 2;
            unArret = new Arret(numArret);
            listeArret.addElement(unArret);
     
            numArret = 3;
            unArret = new Arret(numArret);
            listeArret.addElement(unArret);
           //transmission du vecteur listeArret a la ligne
            uneLigne = new LigneBus("L1", listeArret); 
     
            //insertion de la ligne dans le vecteur reseau
            Reseau.addElement(uneLigne);
     
     
            listeArret.removeAllElements();
     
            //********************2ème Ligne
            numArret = 3;
            unArret = new Arret(numArret);
            listeArret.addElement(unArret);
     
            numArret = 4;
            unArret = new Arret(numArret);
            listeArret.addElement(unArret);
     
            numArret = 5;
            unArret = new Arret(numArret);
            listeArret.addElement(unArret);
     
     
            uneLigne = new LigneBus("L2", listeArret); 
            Reseau.addElement(uneLigne);
     
     
    for (int j=0; j<Reseau.size(); j++) {
                uneLigne = (LigneBus)Reseau.elementAt(j);
                System.out.println("Ligne : "+uneLigne.getNumLigne());
                for (int i=0; i<uneLigne.listArret.size(); i++) {
     unArret = (Arret)uneLigne.listArret.elementAt(i);
         System.out.println(unArret.getArret());
                }
    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
     
    public class LigneBus {
        private String numLigne;
        protected Vector listArret;
        protected Arret arretAd;   
     
        /** Creates a new instance of LigneBus */
        public LigneBus(String nl, Vector la) {
            this.numLigne = nl;
            this.listArret = new Vector();
            this.listArret = la;
            }
     
        public void setNumLigne(String nl){
        this.numLigne = nl;
        }
        public String getNumLigne(){
        return(this.numLigne);
        }
    }
    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
    public class Arret {
        private int numArret;
     
        /** Creates a new instance of Arrets */
        public Arret(int na){
            this.numArret = na;
        }  
        public void setArret(int na){
        this.numArret = na;
        }
        public int getArret(){
            return(this.numArret);
        }
     
    }
    Merci de votre aide

  2. #2
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Dans la facon dont tu as concu le truc, c'est ça qui ne va pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public LigneBus(String nl, Vector la) {
            this.numLigne = nl;
            this.listArret = new Vector();
            this.listArret = la;
            }
    En fait la ta ligne de bus contient une référence vers ton Vector d'arrets qui lui a été passé en paramètre au constructeur. Donc quand tu enleves tous les elements du Vector il faut bien voir que tu vides la ligne 1.
    Une solution peut etre de copier les valeurs de ce vecteur la dans ton attribut this.listArret

  3. #3
    Membre chevronné Avatar de Bezout
    Profil pro
    Développement
    Inscrit en
    Septembre 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Développement

    Informations forums :
    Inscription : Septembre 2003
    Messages : 234
    Par défaut
    En plus faire ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    this.listArret = new Vector();
            this.listArret = la;
    ca ne veut rien dire.

    C'est comme faire

  4. #4
    Membre éprouvé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Par défaut
    Une solution peut etre de copier les valeurs de ce vecteur la dans ton attribut this.listArret
    Merci chtig
    la solution pour laquelle j'ai opté est la suivant :
    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
    public class LigneBus {
        private String numLigne;
        private Vector listArret;
        public LigneBus(String nl, Vector la) {
            this.numLigne = nl;
            this.listArret = la;
            }
    
        public void setListArret(Vector la){
            this.listArret =la;
        }
        public Vector getListArret(){
            return(this.listArret);
        }
    Dans 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
            
    Vector listeArret = new Vector();
    //remplissage vecteur 1
    //*****
    listeArret = new Vector();
    //remplissage vecteur 2
    
    for (int j=0; j<Reseau.size(); j++) {
                uneLigne = (LigneBus)Reseau.elementAt(j);
                System.out.println("Ligne : "+uneLigne.getNumLigne());
                for (int i=0; i<uneLigne.getListArret().size(); i++){
                    //for (int i=0; i<uneLigne.listArret.size(); i++) {
                        
    //(Arret)uneLigne.listArret.elementAt(i); renvoi l'addresse meme de l'arret
          unArret = (Arret)uneLigne.getListArret().elementAt(i);
         System.out.println(unArret.getArret());
            //}    
                }      
     }
    // suppression de listeArret.removeAllElements();
    là ça fonctionne

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

Discussions similaires

  1. Vector d'objets pointant sur les objets du vecteur
    Par darkman19320 dans le forum C++
    Réponses: 6
    Dernier message: 28/01/2013, 14h33
  2. Réponses: 16
    Dernier message: 06/06/2007, 13h42
  3. Architecture pour les objets d'un jeu
    Par Freakazoid dans le forum DirectX
    Réponses: 7
    Dernier message: 31/07/2004, 14h09
  4. Réponses: 5
    Dernier message: 07/07/2004, 16h13
  5. Rafraichissement de la fiche ainsi que de tous les objets
    Par portu dans le forum Composants VCL
    Réponses: 7
    Dernier message: 06/01/2004, 01h25

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