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 :

Element de liste qui se modifie


Sujet :

avec Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Element de liste qui se modifie
    Bonjour,

    J'apprend le Java et j'ai un soucis qui pour moi est ... illogique

    Voici mon 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
    30
    31
     
    public static List<Account> getAllAccounts(){
    	List<Element> accs =  App.conf.LireNoeud("app\\accounts\\account",true);
    	List<Account> accounts = new ArrayList<Account>();
     
    	if(accs.size()>0){
    		System.out.println("Test getAllAccount() :");
    		for(int cpt=0; cpt<accs.size(); cpt++){
    			int id = Integer.parseInt(accs.get(cpt).getAttributeValue("id"));
    			String name = accs.get(cpt).getChildText("name");
    			String login = accs.get(cpt).getChildText("login");
    			String pwd = accs.get(cpt).getChildText("pwd");
    			Account account = new Account(id,name,login,pwd);
    			System.out.println("\t" + account.toString());
    			accounts.add(account);
    			System.out.println("\t" + accounts.get(0).toString());
    		}
    	}
     
    	return accounts;
    }
     
    @Override
    public String toString(){
    	String result = "";
    	result += "ID : " + this.getID() + "\n";
    	result += "\tNom : " + this.getName() + "\n";
    	result += "\tLogin : " + this.getLogin() + "\n";
     
    	return result;
    }
    Et voici ce qu'écrit le programme :

    Test getAllAccount() :
    ID : 1
    Nom : test1
    Login : adresse1@fd.fr

    ID : 1
    Nom : test1
    Login : adresse1@fd.fr

    ID : 2
    Nom : test2
    Login : adresse2@dce.fr

    ID : 1
    Nom : test1
    Login : adresse2@dce.fr

    Merci d'avance pour votre aide

  2. #2
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Cela aurait été bien de mettre ce à quoi tu t'attends. Mais bon, au feeling, je dirais qu'il y a une erreur ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("\t" + accounts.get(0).toString());
    J'imagine que tu veux comparer avec l'element que tu viens d'inserer. Comme tu utilises une liste ordonnée, l'element 0 est le premier element qui a été inséré. Pour comparer avec le dernier, il faudrait plutot faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("\t" + accounts.get(accounts.size()-1).toString());
    ou bien insérer ton account au debut de la liste avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    accounts.add(0, account);

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    En effet, je n'ai pas été assez clair.

    J'ai un fichier xml ressemblant a ceci :

    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
     
    <app>
            ....
             <accounts>
                    <account id="1">
                          <name> test1 </name>
                          <login> <a href="mailto:adresse1@fd.fr">adresse1@fd.fr</a> </login>
                            ....
                    </account id="2">
                    <account>
                          <name> test2 </name>
                          <login> <a href="mailto:adresse2@dce.fr">adresse2@dce.fr</a> </login>
                            ....
                    </account>
             </accounts>
             ....
    </app>
    Ma fonction toString() est une simple surcharge pour moi visualiser facilement les attribut d'un objet Account

    Ma fonction getAllAccount() lis le fichier xml pour récupérer les comptes.
    Ma logique est la suivante : récupère les champs puis crée un objet Account que tu vas ajouter dans une liste.
    Comme ça quand j'aurais besoin de recup mes comptes j'aurai juste à parcourir une liste.

    Ce que je ne comprend pas, c'est pourquoi ma variable login change "toute seule".
    Je m'explique : on voit bien qu'a la creation du compte, tout est bon.
    Or une fois ajouté dans la liste la variable login du compte (ici je teste sur le premier pour illustrer le soucis) change pour celle du dernier compte parcouru dans le xml

    Seul l'attribut login est touché

    Note : si j'ai un troisieme compte alors le 1er et le 2eme prenne la valeur du troisieme.
    En gros les login des n-1 premiers comptes sont modifié avec la valeur du nieme

    Merci

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Montre ta classe account, mais à vue de pifomètre, je dirais que ton problème c'est que t'as définis login comme static.

  5. #5
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    En effet, j'ignore pourquoi je l'avais mis en static d'ailleurs.

    Merci

    Sujet résolu

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

Discussions similaires

  1. Problème liste qui se modifie "toute seule"
    Par Paul_05 dans le forum Général Python
    Réponses: 18
    Dernier message: 06/04/2015, 20h05
  2. Réponses: 22
    Dernier message: 13/09/2013, 15h20
  3. Réponses: 2
    Dernier message: 21/11/2008, 15h02
  4. [Formulaire] zone de liste qui en modifie d'autres
    Par dutrannoy dans le forum Access
    Réponses: 4
    Dernier message: 09/10/2005, 21h19

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