Comment faire un itérateur??? [Résolu]

Chris_LaFouine 109 Messages postés mardi 13 avril 2004Date d'inscription 4 juin 2008 Dernière intervention - 16 nov. 2005 à 17:08 - Dernière réponse : Chris_LaFouine 109 Messages postés mardi 13 avril 2004Date d'inscription 4 juin 2008 Dernière intervention
- 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());

}
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Chris_LaFouine 109 Messages postés mardi 13 avril 2004Date d'inscription 4 juin 2008 Dernière intervention - 18 nov. 2005 à 13:22
3
Merci
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

Merci Chris_LaFouine 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 73 internautes ce mois-ci

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



public class Reponse implements Iterable<Reponse> {

Merci Chris_LaFouine 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 73 internautes ce mois-ci

Commenter la réponse de Chris_LaFouine
luuuuudooooo 64 Messages postés mardi 4 octobre 2005Date d'inscription 2 août 2006 Dernière intervention - 16 nov. 2005 à 17:19
0
Merci
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());
}
Commenter la réponse de luuuuudooooo
Chris_LaFouine 109 Messages postés mardi 13 avril 2004Date d'inscription 4 juin 2008 Dernière intervention - 16 nov. 2005 à 17:22
0
Merci
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 ;)
Commenter la réponse de Chris_LaFouine
kaloway 358 Messages postés jeudi 24 octobre 2002Date d'inscription 30 mars 2011 Dernière intervention - 16 nov. 2005 à 19:17
0
Merci
ça devrait marcher. mais il faut faire

for(Reponse r : q._alReponse)
Commenter la réponse de kaloway
bernardgautier 14 Messages postés dimanche 26 novembre 2000Date d'inscription 20 novembre 2005 Dernière intervention - 17 nov. 2005 à 21:18
0
Merci
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 +
Commenter la réponse de bernardgautier

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.