Comment faire un itérateur???

Résolu
Chris_LaFouine Messages postés 109 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 4 juin 2008 - 16 nov. 2005 à 17:08
Chris_LaFouine Messages postés 109 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 4 juin 2008 - 18 nov. 2005 à 13:23
J'explique mon problème...



J'ai un projet à faire en Java (j'utilise la version 1.5.0), je dois faire un programme qui permette de répondre à un QCM...

Jusque là rien de bien compliqué... je vous passe les détails mais en gros...



J'ai une classe Reponse avec pleins d'attributs (4 en fait...) et une classe Question (qui a aussi ses attributs...).

Comme une Question contient plusieurs Réponses, j'ai donc mis dans ma classe Question ceci :

private ArrayList<Reponse> _alReponses;



Mon problème est le suivant :

Est-il possible de faire un itérateur dans ma classe Question pour
qu'ensuite, dans mon interface graphique (donc une autre classe), je
puisse faire un truc dans ce style :

Question q=new Question(...);

for(Reponse r : q) {

System.out.println(r.toString());

}

6 réponses

Chris_LaFouine Messages postés 109 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 4 juin 2008
18 nov. 2005 à 13:22
C'est bon, j'ai trouvé...



J'ai fait :

public class Reponse implements Iterable {



Et ensuite, j'ai fait :

public Iterator<Reponse> iterator() {

return _alReponses.iterator();

}



Merci quand meme
3
Chris_LaFouine Messages postés 109 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 4 juin 2008
18 nov. 2005 à 13:23
C'est pas tout à fait ça en fait, pour l'implémentation, il faut faire :



public class Reponse implements Iterable<Reponse> {
3
luuuuudooooo Messages postés 64 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 2 août 2006 4
16 nov. 2005 à 17:19
je ne sais pas si je comprend bien le problème
Ca ne va pas si tu fais simplement quelque chose comme ceci ? :

Question q=new Question(...);
for (int i=0; i<q._alReponse.size(); i++) {
System.out.println(((Reponse)q._alReponse.get(i)).toString());
}
0
Chris_LaFouine Messages postés 109 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 4 juin 2008
16 nov. 2005 à 17:22
Je sais qu'on peut faire comme ça, mais je trouve que :

for(Reponse r : q)

est plus lisible que :

for (int i=0; i<q._alReponse.size(); i++)



même si ça fait la même chose! Mais si on peut pas faire ce que je proposai, tant pis, je me contenterai de ta solution ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kaloway Messages postés 358 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 13 avril 2020
16 nov. 2005 à 19:17
ça devrait marcher. mais il faut faire

for(Reponse r : q._alReponse)
0
bernardgautier Messages postés 14 Date d'inscription dimanche 26 novembre 2000 Statut Membre Dernière intervention 20 novembre 2005
17 nov. 2005 à 21:18
Je ne suis pas specialiste mais je pense qu'il faut que ta classe
implement l'interface Iterable pour que la boucle for each fonctionne.



En gros tu devrais avoir



public class Reponse implements Iterable {

...



et ensuite il y certainement une fonction de l'interface Iterable a coder mais je ne sais pas quel est cette fonction.

J'espere que cela t'aidera. A +
0
Rejoignez-nous