Problème avec une ArrayList

Résolu
tmar2
Messages postés
9
Date d'inscription
lundi 21 avril 2014
Statut
Membre
Dernière intervention
28 avril 2014
- Modifié par cs_Julien39 le 15/05/2014 à 08:28
KX
Messages postés
16568
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
5 juillet 2022
- 28 avril 2014 à 19:06
Bonjour,

Tout d'abord, j'ai alloué un ArrayList dans main(). Puis, j'ai le passé comme un paramètre dans une méthode ou j'ai ajouter avec add quelques case.
Après lorsque, j'ai voulu récupérer les variables ajoutées dans main(), j'ai pas pu faire ça!
Malgré que j'ai testé dans ma méthode que les valeurs sont bien ajoutées à ArrayList.

J'ai pas compris pourquoi!

Merci pour votre aide.

3 réponses

cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
28 avril 2014 à 14:39
Salut,

Peux tu nous montrer ton code stp ?
1
tmar2
Messages postés
9
Date d'inscription
lundi 21 avril 2014
Statut
Membre
Dernière intervention
28 avril 2014
1
Modifié par tmar2 le 28/04/2014 à 17:07
J'ai déclaré la méthode dans la classe jdom2.

Class jdom2 {
 public static void getUmlPDM(ArrayList<ClassPDM> vectClass,ArrayList<AssociationPDM> vectAsso, String Path){
 ClassPDM Class = new ClassPDM();
// j'ai fait un parsing puis je met chaque noeud dans une classe puis je l'ajoute au vecteur vectClass
       Class.setNom (name);       
       List<Element> attributList = element.getChildren("ownedAttribute"); 
       Class.setNbAtt(attributList.size());
       vectClass.add(Class);
       System.out.println(vectClass.get((vectClass.size() -1)).nom); // l'affichage fonctionne parfaitement
}


ici J'ai fait l'appel. En fait, j'ai fait les println pour tester est-ce-que le remplissage fonctionne ou non ?
?Class Accueil {
        ArrayList<ClassPDM> vectClassPDM ;
 ArrayList<AssociationPDM> vectAssoPDM;
Accueil () {
 vectClassPDM = new ArrayList<ClassPDM>();
 vectAssoPDM = new ArrayList<AssociationPDM>();

        entity.JDOM2.getUmlPDM(vectClassPDM,vectAssoPDM,PDMPath);
        System.out.println(vectClassPDM.size()); // l'affichage est toujours 0
}}



------------------------------------------------------------------
Message édité par modérateur : Ajout des balises de code..
voir ici pour plus d'infos :
http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
1
KX
Messages postés
16568
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
5 juillet 2022
124
Modifié par KX le 28/04/2014 à 19:14
Bonjour,

Je n'ai pas trouvé d'erreur avec ton code concernant les listes, cependant il y a plusieurs erreurs qui font que ton code ne pourra pas fonctionner.

En premier lieu, tu as des classes déclarées
Class 
au lieu de
class
, la classe de ton premier code est
jdom2
et dans le deuxième code
JDOM2
, même en supposant que ton code fonctionne la méthode qui serait appelée ne serait pas la bonne.

Ensuite il faut respecter les règles de syntaxes en Java, les noms de classes commencent par une majuscule et s'écrivent ensuite en minuscules, les noms de variables sont toutes en minuscules, etc.
Par exemple quand tu déclare un objet "Class", c'est horrible, parce que la classe Class existe déjà, donc si tu fais Class.setNbAtt on a l'impression que tu fais un appel de méthode statique sur la classe Class !!

J'ai pas fini : tes deux paramètres vectAssoPDM et PDMPath ne te servent à rien, alors enlèves les. De plus nommes tes variables en fonction de leur type. Si tu as une List, ne nommes pas ta variable vect, ça n'a pas de sens. De même que ta méthode s'appelle "get" alors qu'elle ne renvoie rien...

Et enfin, cerise sur le gâteau, utilises un maximum les interfaces Java, ainsi au lieu de déclarer une variable ArrayList, utilises plutôt List. C'est comme ça que font les codes Java (la preuve avec ton getChildren), alors fais le aussi dans tes codes !

Je résume :

class JDom2 {
    public static void addUmlPdmToList(List<ClassPDM> listClassPdm) {
        ClassPDM classPdm = new ClassPDM();
        classPdm.setNom(name);       
        List<Element> attributList = element.getChildren("ownedAttribute"); 
        classPdm.setNbAtt(attributList.size());
        listClassPdm.add(classPdm);
        System.out.println(listClassPdm.get(listClassPdm.size()-1)).getNom());
    }
}

class Accueil {
    List<ClassPDM> listClassPdm;

    Accueil () {
        listClassPdm = new ArrayList<ClassPDM>();
        System.out.println(listClassPdm.size());
        entity.JDom2.addUmlPdmToList(listClassPdm);
        System.out.println(listClassPdm.size());
    }
}
1