Problème avec une ArrayList [Résolu]

Signaler
Messages postés
9
Date d'inscription
lundi 21 avril 2014
Statut
Membre
Dernière intervention
28 avril 2014
-
Messages postés
16365
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
16 juin 2021
-
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

Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
345
Salut,

Peux tu nous montrer ton code stp ?
Messages postés
9
Date d'inscription
lundi 21 avril 2014
Statut
Membre
Dernière intervention
28 avril 2014
1
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
Messages postés
16365
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
16 juin 2021
122
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());
    }
}