TP commit Q1

Programmation Avancée

Modérateur : Douin

gautierd
Messages : 49
Inscription : 12 oct. 2016 14:55

TP commit Q1

Message par gautierd » 01 déc. 2016 19:42

Bonsoir à tous,
je commence le tp commit.
J'essaye désespérément d'ajouter un cotisant à un groupe et à vérifier que j'ai le bon nombre de cotisants. Le problème survient lorsque je souhaite ajouter un groupe à un autre groupe.
Les méthodes incriminées sont
public void ajouter(Cotisant cotisant){
cotisant.setParent(this);
liste.add(cotisant);
}

public int nombreDeCotisants(){
int nombre = 0;
Iterator<Cotisant> it = new GroupeIterator(iterator());
while (it.hasNext())
{
Cotisant c = it.next();
nombre = nombre + c.nombreDeCotisants();
}
return nombre;
}
Quelqu'un peut il m'aider ? Merci d'avance

TSwank
Messages : 15
Inscription : 05 juin 2014 11:03

Re: TP commit Q1

Message par TSwank » 01 déc. 2016 20:12

Bonjour,

C'est un problème avec l'itérateur de la classe, normalement ça devrait fonctionner avec une boucle foreach.
Dernière édition par TSwank le 02 déc. 2016 9:57, édité 1 fois.

gautierd
Messages : 49
Inscription : 12 oct. 2016 14:55

Re: TP commit Q1

Message par gautierd » 01 déc. 2016 20:58

Merci pour le retour.
Je vois pas pourquoi mon itérateur passe deux fois ?

gautierd
Messages : 49
Inscription : 12 oct. 2016 14:55

Re: TP commit Q1

Message par gautierd » 02 déc. 2016 12:19

J'ai effectivement corrigé la ligne pour de l'itérator avec Iterator<Cotisant> = iterator();
Le problème persiste ...
A suivre ...

TSwank
Messages : 15
Inscription : 05 juin 2014 11:03

Re: TP commit Q1

Message par TSwank » 02 déc. 2016 12:43

Bonjour,

J'ai fais une erreur dans ma réponse précédente.
Je pense que le problème (dans ce cas de figure) est que l'itérateur renvoi les sous-éléments GroupeDeContributeurs, puis les Cotisant imbriqués.
Donc pour pouvoir l'utiliser dans les autres méthodes de la classe, il faut séparer le cas où l'élément next() est une instance de GroupeDeContributeurs.
(Ou utiliser une boucle foreach)

pellier
Messages : 37
Inscription : 30 oct. 2016 21:13

Re: TP commit Q1

Message par pellier » 02 déc. 2016 16:44

Salut,

Sans trop savoir pourquoi, en effet si on utilise une boucle for sur la liste à la place de

Code : Tout sélectionner

new iterator() — while(hasNext()) — next()…
Le problème du doublon n'apparaît plus

Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité