Iterator.next() / JAVA

Résolu
wolves'sbrother Messages postés 223 Date d'inscription   Statut Membre Dernière intervention   -  
 hdhdhdh -
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. hay
     
    C'est pas ce que fait le i.hasNext() qui te dit si il y a encore un élément après?
    2
  2. wolves'sbrother Messages postés 223 Date d'inscription   Statut Membre Dernière intervention   36
     
    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
    0
  3. hay
     
    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....
    0
  4. wolves'sbrother Messages postés 223 Date d'inscription   Statut Membre Dernière intervention   36
     
    Je vais essayer ça tout de suite.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. hay
     
    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++)
    0
  7. wolves'sbrother Messages postés 223 Date d'inscription   Statut Membre Dernière intervention   36
     
    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
    0
  8. hay
     
    Par contre, tantot j'ai écrit:

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

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

    while (i.hasNext())
    {...}
    0
  9. wolves'sbrother Messages postés 223 Date d'inscription   Statut Membre Dernière intervention   36
     
    OK.merci encore
    0
  10. hay
     
    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
    0
    1. hdhdhdh
       
      dgdgsdgdsdg
      0
  11. wolves'sbrother Messages postés 223 Date d'inscription   Statut Membre Dernière intervention   36
     
    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
    0
  12. wolves'sbrother Messages postés 223 Date d'inscription   Statut Membre Dernière intervention   36
     
    wé ta encore raison,ça marche pas totalement avec le for.merci beaûcoup
    0