Se connecter / S'enregistrer
Votre question

Iterateur Fonction hasnext() deconne

Tags :
  • Fusion
  • Next
  • Programmation
Dernière réponse : dans Programmation
17 Novembre 2012 17:19:23

Bonjour
Je travaille actuellement sur un prog et j'ai un problème avec mes itérateurs

voila le bout de code qui pose problème:

  1. while(zC_itTri.hasNext()==true){
  2. zS_tmp = zC_itTri.next();
  3. for(int i=0;i<10;i++){
  4. if (zS_tmp[i] != null){
  5. zS_fusion[i] = zS_tmp[i];
  6. }
  7. zS_save = zS_tmp[1];
  8. while(zC_itTri.hasNext() && zS_tmp[1].equals(zS_save)){
  9. for(int j=0;j<10;j++){
  10. if (zS_tmp[j] != null){
  11. zS_fusion[j] = zS_tmp[j];
  12. }
  13. }
  14. zS_tmp = zC_itTri.next();
  15. }
  16. oC_lignes.add(zS_fusion);
  17.  
  18. zS_fusion = new String[10];
  19. zS_save = zS_tmp[1];
  20. }
  21. }

J'ai du me tromper quelque part mais en gros, je me demande si le fait de faire appel deux fois à la fonction next et a la fonction hasnext ne poserai pas problème??
Quand je debug, je met un watch sur l'expression hasnext et je vois que le programme continue à rentrer dans la boucle même si hasnext == false
Pouvez vous m'aider? ou à défaut me confirmer qu'on ne peut pas faire ce genre d'opérations sur des iterateurs.
Finalement, que faire pour palier à ça?

Autres pages sur : iterateur fonction hasnext deconne

a b L Programmation
18 Novembre 2012 00:21:41

En 2008, il y a eu une correction du bug du double appel à hasNext() sur UIMA:
https://issues.apache.org/jira/browse/UIMA-911

Tu peux utiliser 2 booléens:
1 pour savoir si tu as utilisé le next dans le second while
1 pour le hasNext du second while que tu sors juste avant
Ensuite tu modifies ton premier while pour tester
((flagNextPasFait && flagHasNext) || (!flagNextPasFait && zC_itTri.hasNext()))


Comme ça, tu verras bien si c'est ce problème.
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS