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

Java Discussion :

Vector qui contient les mêmes valeurs


Sujet :

Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 22
    Points : 23
    Points
    23
    Par défaut Vector qui contient les mêmes valeurs
    Bonjour à tous,

    Bon, j'y connais rien en Java, et rien en DOO. Mais j'ai un boulot à faire en Java, donc je le fais et j'essaie de le faire bien, même si ça me gonfle.

    Tout ce que j'ai fait jusqu'à maintenant, je l'ai fait en lisant des docs et des bouquins, donc je n'ai eu l'aide d'aucune vraie personne professionnel ou amateur.
    Mais là, mon problème est incompréhensible et je ne trouve pas de cas similaire, ou alors je ne sais pas quoi chercher...

    J'ai fait une structure de données, en Java on appelle ça une classe si j'ai bien compris?
    La voici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class Resultat
    {
    		public String nom_flot;
    		public int rang; 
    		public long date_arrivee; 
    }
    Ensuite j'ai fait une variable normale et un vecteur avec cette classe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Vector<Resultat> tab_result = new Vector<Resultat>(); 
    Resultat Ligne_Courante = new Resultat();
    La variable "Ligne_Courante" est surement inutile quand on s'y connait mais moi ça m'aide à y voir clair dans ce que je fais.

    Ensuite, j'ai une boucle qui vient initialiser les valeurs de la variable Ligne_Courante (donc elles changent à chaque tour de boucle) et j'ajoute Ligne_Courange à une ligne de mon Vector. Ce qui m'intéresse à la fin c'est d'avoir un beau vecteur de ma classe avec toutes mes valeurs.

    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
     
    for (int i = 0; i < une_limite; i++)
    		{
     
    			Ligne_Courante.date_arrivee = <la valeur qu'il faut>
    			Ligne_Courante.nom_flot = <la valeur qu'il faut>
    			Ligne_Courante.rang = <la valeur qu'il faut>
                            tab_result.add(Ligne_Courante);
    			System.out.println(Ligne_Courante.nom_flot+
    					"\t"+Ligne_Courante.rang+
    					"\t"+Ligne_Courante.date_arrivee);
     
    		}
    for (int i = 0; i < tab_result.size(); i++)
    {
    	System.out.println(tab_result.elementAt(i).nom_flot+
    					"\t"+tab_result.elementAt(i).rang+
    					"\t"+tab_result.elementAt(i).date_arrivee);
    }
    Le premier println avec Ligne_Courante affiche bien les bonnes valeurs et le deuxième qui vérifie le contenu du tableau affiche toujours les mêmes valeurs.

    J'ai exécuté le code en mode "pas à pas" et en fait, les valeurs sont toujours bonnes dans Ligne_Courante, le add la met bien dans le tableau, mais quand on passe à la deuxième valeur, le add met la valeur à la suite de la précédente mais remplace aussi la précédente par cette valeur et ainsi de suite pour tout les tours de boucle. Et au final, mon tableau est initialisé avec i lignes de la valeur du dernier tour de boucle...

    Franchement ça me dépasse et je ne comprends pas comment le débuger..

    J'ai essayé addElement et add(i, Ligne_Courante) mais j'ai le même problème...

    Est-ce que c'est un problème connu ? et comment le résoudre?
    J'ai utilisé les vecteurs parce que j'avais compris facilement comment ça marchait et que je ne veux pas me prendre la tête, mais est-ce bien adapté à mon usage?

    Merci d'avance si vous voulez bien m'aider

    Bonne soirée!

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 554
    Points : 21 615
    Points
    21 615
    Par défaut
    Citation Envoyé par zobbyzobba Voir le message
    Est-ce que c'est un problème connu ?
    C'est le fonctionnement normal de Java, le système de références de Java.
    Il est connu que ceux qui viennent de certains autres langages de programmation aient du mal avec ça.

    Citation Envoyé par zobbyzobba Voir le message
    et comment le résoudre?
    L'opérateur new sert à créer un nouvel objet de la classe indiquée. Si tu veux créer plusieurs objets différents, il faut appeler plusieurs fois new.
    Là tu n'as qu'un seul objet que tu as mis plusieurs fois dans un vecteur.

    Citation Envoyé par zobbyzobba Voir le message
    J'ai utilisé les vecteurs parce que j'avais compris facilement comment ça marchait et que je ne veux pas me prendre la tête, mais est-ce bien adapté à mon usage?
    Ce n'est pas spécialement mal, mais c'est obsolète. De nos jours on utiliserait plutôt ArrayList. Ça fonctionne pareil mais ça fait moins de synchronisations inutiles, et c'est plus cohérent avec le Java moderne.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 281
    Points : 321
    Points
    321
    Par défaut
    En fait ton vecteur référence toujours le même object. Donc lorsque tu modifie ligne_courante, tu modifie ce qui est dans le vecteur (vu que c'est le même object).

    A la fin de ta boucle, il faut créer un nouvelle object en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ligne_Courante=new Resultat();
    Une dernière chose : les noms des variables en java commence en minuscule et un nouveau mot en majuscule, ce qui donnerai ligneCourante par exemple.

Discussions similaires

  1. Sous-requête qui retourne les mêmes valeurs
    Par messi1987 dans le forum Développement
    Réponses: 5
    Dernier message: 23/09/2014, 19h22
  2. Réponses: 1
    Dernier message: 19/06/2011, 18h48
  3. Réponses: 4
    Dernier message: 13/06/2011, 17h41
  4. [XL-2003] supprimer des lignes qui ont les même valeurs
    Par Neptune64 dans le forum Excel
    Réponses: 1
    Dernier message: 09/08/2009, 00h30
  5. Réponses: 3
    Dernier message: 20/01/2007, 19h09

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