IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Erreur lors d'un itérator.


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 51
    Par défaut Erreur lors d'un itérator.
    Bonjour, j'ai cette méthode suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public void unregister(Student s, Course c) throws UniversityException {
            Iterator<Register> it = myRegister.iterator();
            while (it.hasNext())
              if(it.next().getStudent().equals(s) && it.next().getCourse().equals(c))
              myRegister.remove(it.next());
            }
    Avec les méthodes déclaré comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    (...)
    private Student s;
        private Course c;
    (...)
    public Student getStudent()
        {
            return s;
        }
     
        public Course getCourse()
        {
            return c;
        }
    J'ai implémenté hashCode() et equals() dans les classe Student et Course.

    Or j'ai une erreur à la ligne en gras :

    java.util.NoSuchElementException
    at java.util.HashMap$HashIterator.nextEntry(HashMap.java:796)
    at java.util.HashMap$KeyIterator.next(HashMap.java:828)
    at University.unregister(University.java:83)


    Je ne sais pas d'où cela vient, merci de votre aide.

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    Parce que à chaque fois que tu appelles la méthode next() (2 fois dans ton condition if) de l'iterator, tu passes à l'élément suivant or qu'il n'y plus d'objet.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while (it.hasNext()){
                Register register = it.next();
                if(register.getStudent().equals(s) && register.getCourse().equals(c))
                it.remove();
            }
    A+.

  3. #3
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Par défaut
    Tu l'appelles même 4 fois en tout

    Je te déconseille d'utiliser cette technique, au profil de ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    List<Register> myRegister = ...
     
    public void unregister(Student s, Course c) throws UniversityException {
      for(Register register : myRegister) {
        if(register.getStudent().equals(s) && register.getCourse().equals(c)) {
          myRegister.remove(register);
        }
      }
    }
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 68
    Par défaut
    Citation Envoyé par thierryler Voir le message
    Tu l'appelles même 4 fois en tout

    Je te déconseille d'utiliser cette technique, au profil de ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    List<Register> myRegister = ...
     
    public void unregister(Student s, Course c) throws UniversityException {
      for(Register register : myRegister) {
        if(register.getStudent().equals(s) && register.getCourse().equals(c)) {
          myRegister.remove(register);
        }
      }
    }
    bonjour
    tu as essayé ton code? je ne pense pas qu'il marche...

  5. #5
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Par défaut
    Non ça ne marche pas, c'est juste pour donner une idée. Mais l'idéal ça serait de faire un remove directement en fait...
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  6. #6
    Membre actif
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 51
    Par défaut
    Nope, il ne fonctionne pas, mais je vois ce que tu veux dire.
    Pas facile l'histoire.

Discussions similaires

  1. [XL-2010] Erreur lors d'une itération
    Par justice77 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/03/2014, 10h33
  2. Erreur lors de l'execution d'un script jsp
    Par tuxor dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 06/08/2004, 12h35
  3. Erreur lors de la connexion
    Par mathll65 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 23/03/2004, 17h46
  4. Erreur lors de modification d'une table
    Par seb.49 dans le forum SQL
    Réponses: 11
    Dernier message: 13/01/2003, 17h16
  5. [VB6] Erreur lors de l'ouverture d'un document Word
    Par Marco le Pouillot dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 03/01/2003, 09h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo