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

Collection et Stream Java Discussion :

Probleme de Vector écrasement de données


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 54
    Par défaut Probleme de Vector écrasement de données
    Bonjour à tous.
    Voila, je suis en lutte avec un vector retord qui a chaque fois que je lui ajoute un nouvel element via addElement, écrase toutes les valeurs contenues dans le vector par la nouvelle. Je commence à être fatigué et je ne trouve pas de solution. Si vous pouviez m'éclairer ma lanterne je vous serai très redevable:

    Déclaration du vecteur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     private  Vector<String[]> vec1 = new Vector<String[]>();
    Code:

    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
     
    while(n!=0)
    {
    int choise = in.readInt();
    switch(choise)
    {
    case 0: break;
    case 1:
            message[0] =(String) in.readObject();
    	message[1] = (String)in.readObject();
    	message[2] = (String)in.readObject();
    	message[3] = (String)in.readObject();
    	System.out.println(message[0]+" "+message[2])
    	vec1.addElement(message);
     
    	int b=vec1.size();
    	String[]test1 =new String[4]; 
    	for(int j=0;j<b;j++)
    	{ 	
    	test1= vec1.elementAt(j);
    	System.out.println(test1[0]);
    	System.out.println(test1[1]);
    	System.out.println(test1[2]);
    	System.out.println(test1[3]);
     
                  }
    break;
    }
    }
    Merci

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Par défaut
    Citation Envoyé par abzal Voir le message
    Voila, je suis en lutte avec un vector retord
    Tsk, tsk, c'est pas bien d'insulter les Vector


    Citation Envoyé par abzal Voir le message
    a chaque fois que je lui ajoute un nouvel element via addElement, écrase toutes les valeurs contenues dans le vector par la nouvelle
    Vu que dans l'exemple que tu nous a donné tu n'ajoutes qu'un seul élément dans ton vecteur, ça va être un peu dur de voir ce que tu fais de mal pour "écraser toutes les autres valeurs" puisqu'il n'y a pas d'autre valeur à écraser...

    Jouons aux devinettes.
    Est-ce que, par hasard, tu n'utiliserais pas le même objet message (String[]) à chaque fois ? Du genre : je remplis le tableau message, je l'ajoute au vecteur, je le remplis avec d'autres valeurs, je l'ajoute au vecteur, etc...
    Dans ce cas : c'est normal que tu écrases les valeurs précédentes ! Car en fait, tu ajoutes à chaque fois le même objet. Et donc ton vecteur contient au final n fois le même objet message, qui ne contient bien évidemment que 4 valeurs, les 4 dernières que tu as attribué à ses 4 cases en écrasant les précédentes...
    Il faut ajouter un nouvel objet à chaque fois (donc créer un nouveau tableau avant de le remplir et de l'ajouter au Vector).

    Si ce n'est pas ça du tout, pour obtenir un vrai diagnostic donne plus de code (qu'on te voie ajouter au moins 2 éléments dans ton tableau, où le deuxième "écrase" le premier sans que tu le veuilles... on n'est pas devin)

  3. #3
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 54
    Par défaut
    Désoler j'aurais du mettre plus de code en fait il s'agit de la partie server de mon programme. La partie client envoie un sms au server. Je rentre donc manuellement les sms. Il n'est pas possible que j'envoie deux fois le même
    Lorsque je fais mes test le premier est bien enregistrer. mais dès que j'en rentre un second la première valeur est écraser pas nouvelle pourtant la taille du vecteur augmente bien

    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
    public void sendmess() throws IOException
    {
     
    	Date dat= new Date();
    	dat.getDate();
    	String mynum= "0622360495";
    	String dest_num=String.valueOf(num);
    	String passo= String.valueOf(message);
    	out.writeInt(1);
    	out.writeObject(dest_num);
    	out.writeObject(mynum);
    	out.writeObject(dat.toString());
    	out.writeObject(passo);
    	System.out.println("ici");
     
    }
    Rien qu'avec le getDate je suis sur que les message sont différent.

  4. #4
    Membre expérimenté Avatar de sewatech
    Inscrit en
    Février 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Février 2007
    Messages : 141
    Par défaut
    Je reprends et soutiens l'argument de Astartee.
    Tu utilise un objet de type tableau, dans la variable message. Cet objet est instancié une fois pour toute et tu changes son contenu à chaque réception. Comme le Vector ne fait que de références à cet objet, tu ajoutes n fois le même objet, en changeant son contenu.

    Essaie plutôt ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    case 1:
            message = new String[4];
            message[0] =(String) in.readObject();
    	message[1] = (String)in.readObject();
     ...

  5. #5
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 54
    Par défaut
    En lisant ton message, je viens de comprendre mon erreur. Je vais tester tout cela, mais je suis quasiment sur que maintenant cela va marché

    Merci encore

  6. #6
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 54
    Par défaut
    Bon, c'était bien cela. J'avais oublier que le vector est un conteneur donc en utilisant le même tableau c'est normal d'avoir constamment les mêmes valeur dans ce vector....

    Merci encore

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

Discussions similaires

  1. Probleme avec Module Base de données (dbd32.exe)
    Par mekdar dans le forum Bases de données
    Réponses: 3
    Dernier message: 25/10/2005, 13h45
  2. probleme de vector
    Par byvan dans le forum SL & STL
    Réponses: 22
    Dernier message: 17/09/2005, 18h56
  3. [HTML][FORMULAIRE] Probleme dans la récupération des données
    Par baddounet dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 15/08/2005, 18h51
  4. probleme avec une base de donnée postgres SQL
    Par Alexlesilex dans le forum Bases de données
    Réponses: 1
    Dernier message: 19/06/2005, 22h09
  5. probleme avec vector
    Par venomelektro dans le forum SL & STL
    Réponses: 16
    Dernier message: 16/08/2004, 23h39

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