Iterator.next() / JAVA

Résolu
Bonjour,
J'utilise un Itertaor et j'amerais savoir comment on fais pour vérifier que Itertaor.next() existe
                            
               for ( Iterator i = lis.iterator();i.hasNext();)              
               {                         
                  String ar = desc.get("author" + id);  
                  Element au = (Element)i.next();                  
                }
               

12 réponses

  1. C'est pas ce que fait le i.hasNext() qui te dit si il y a encore un élément après?
    1. wé ta encore raison,ça marche pas totalement avec le for.merci beaûcoup
      1. enfet je travaille avec JDOM.
           List lis = book.getChildren("author"); 	       
                       Iterator iter = lis.iterator();

        Et la liste "lis" peut contenir juska 5 Elements,et kand par exempe elle ne contient que 2 Element,j'aimeré pouvoir ajouter les 3 autres,c'est pou ça que je préfére utiliser un for à la place du while
        1. Par contre désolé d'encore t'embêter mais ce que tu as écrit tantot n'est pas bon :s

          Iterator i = lis.iterator();
          for ( i=0 ; i<6;i++)

          if (i.hasNext()){au = i.next();....}
          else {....}

          En rentrant dans ta boucle for, tu mets le i à 0. Si ça ne provoque pas d'erreur, ça entrainera quand même que ton code s'exécutera pas normalement. Je mettrais plutot:

          Iterator i = lis.iterator();

          while (i.hasNext())
          {
          au = i.next();
          }

          Et ainsi il parcourera toute ta liste. Mais par contre il écrasera à chaque fois la valeur de la variable au par le nouvel élément
          1. dgdgsdgdsdg
        2. Par contre, tantot j'ai écrit:

          if (i.hasNext())
          {...}

          Je me suis trompé, il s'agissait plutôt de:

          while (i.hasNext())
          {...}
          1. wé,t'as raison,je vais devoir modifier ma boucle.
             Iterator i = lis.iterator();
             for ( i=0 ; i<6;i++)
                        
                        if (i.hasNext()){au = i.next();....}
                        else {....}
            

            ça devré marché.

            Merci beacoup et bnne soirée
            1. je rappelle la structure de la boucle for:

              for (variable avec valeur de départ; condition sur la variable (booléen) ; incrément)

              Dans ton code on voit bien que ton i.hasNext() ne se trouve pas dans la partie d'incrément mais bien dans le booléen qui dit si on continue ou pas.

              ex: for (int i = 0; i < 5; i++)
              1. Bizarre ce que tu me dis... Moi dans mes codes java, je fais toujours:

                if (qquechose.hasnext())
                {
                String var = qquechose.next();
                }

                Et au moment où il n'y aura plus d'élément suivant, qquechose.hasnext() renverra false, et donc le programme s'arrêtera la....
                1. iterator.hashnext() pass à l'élement suivant,comme si on fait i++ pour un integer, et le iterator.next() renvoi la valeur de l'element suivant,et moi j'aimeré faire un test du genre
                  if(Itertaor.next() != null)
                  , mais ça ne marche pas comme ça,donc est ce qu(il ya un autre moyen pour le faire.
                  Merci