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

Langage Java Discussion :

Probleme sur la boucle While


Sujet :

Langage Java

  1. #1
    Membre averti Avatar de Gregory.M
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 684
    Points : 309
    Points
    309
    Par défaut Probleme sur la boucle While
    bonjour,

    Voici le code que je fais ci-dessous.
    Je compare un String pour voir si il existe déja dans ma collection.
    Si il n'existe pas je crée un nouvel objet, sinon je ne fais rien.

    en faisant ceci je pensais ne pas me tromper mais je tombe sur un Exception:
    java.util.NoSuchElementException

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    	public static void CompareSrv(String srvname, Collection<CServer> srvs)
    	{
    		if(srvs.size() == 0)
    			srvs.add(new CServer(srvname));
    		else
    		{
     
     
    			Boolean test = false;
    			Iterator iterator = srvs.iterator();
    			while ((iterator.hasNext())||(test == false)) {
    				CServer srv = (CServer) iterator.next();
     
     
    				if(srvname.equals(srv.get_name()))
    				{
    					test=true;
    				}	
    			}
     
    			if(test)
    				srvs.add(new CServer(srvname));
    		}
    	}

    Quelqu'un peut il m'éclairer?

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Hie,

    Quand tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    			while ((iterator.hasNext())||(test == false))
    si tu n'as pas trouvé en arrivant à la fin de ta collection, test est toujours = false, et tu vas donc boucler au-delà...

    Il faut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    			while ((iterator.hasNext()) && (test == false))
    Si les cons volaient, il ferait nuit à midi.

  3. #3
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Autre remarques : le Boolean n'est pas très judicieux dans ce cas car à chaque itération tu auras de l'auto(un)boxing pour effectuer la comparaison avec false. Il aurait mieux value utiliser le type primitif boolean...

    Mais le mieux, plutôt que d'utiliser une variable et une condition plus complexe, ce serait plus simple d'utiliser le mot-clef break...

    a++

    PS : Et tu devrais jeter un coup d'oeil aux conventions de nommages
    PS 2 : Ta méthode fait l'inverse de ce que tu décris : elle ajoute l'objet si il est déjà présent...

  4. #4
    Membre averti Avatar de Gregory.M
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 684
    Points : 309
    Points
    309
    Par défaut
    Merci cela fonctionne.

    Je suis fatigué j'ai du mal à réfléchir

  5. #5
    Membre éprouvé
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Points : 935
    Points
    935
    Par défaut
    Bonjour

    un truc qui me choque toujours "test == false" pourquoi pas "!test" ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme sur les boucles while
    Par killerace dans le forum Débuter
    Réponses: 3
    Dernier message: 12/06/2009, 19h40
  2. Explication sur la boucle 'while'
    Par superspider dans le forum Débuter
    Réponses: 13
    Dernier message: 21/11/2008, 09h41
  3. Probleme dans une boucle while pour remplir une JTable
    Par sky88 dans le forum Composants
    Réponses: 3
    Dernier message: 27/03/2008, 14h01
  4. [MySQL] Probleme UPDATE avec boucle WHILE
    Par iverson_mac dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/06/2007, 17h07

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