Un bout de code java qui ne marche pas!!!

[Résolu/Fermé]
Signaler
Messages postés
150
Date d'inscription
lundi 5 novembre 2007
Statut
Membre
Dernière intervention
28 novembre 2011
-
Messages postés
150
Date d'inscription
lundi 5 novembre 2007
Statut
Membre
Dernière intervention
28 novembre 2011
-
Bonjour,

un morceau de mon code ne marche pas et je ne comprends vraiment pas pourquoi.
Si quelqu'un pourra me trouver l'anomalie, je lui serai très reconnaissante.

voici mon code:

int l=0;
                
                while ((!findSRC) || (l>=s)){

                      System.out.println("d");

                      if (condition)          
                      {findSRC=true;System.out.println("true");}

                      else {l++; System.out.println("l: "+l);}

                       System.out.println("e");
                 }
            
        System.out.println("f");
}


dans ce code quand on passe par le if, il imprime :
d
true
e
f
parcontre lorsqu'on passe par le else, il s'arrête avant d'imprimer le f :
d
l: 1
e
d
l: 2
e
d

Merci d'avance :)


Le rêve n'aboutit à rien, l'action à tout.
(J. FIAUX).

2 réponses

Messages postés
388
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
15 novembre 2011
53
Bonjour,

je ne sais pas pourquoi il n'affiche pas le "f", par contre tu peux ajouter des flush après tes println pour etre sur qu'ils s'affichent dans le bon ordre.

system.out.flush();

https://docs.oracle.com/javase/1.5.0/docs/api/java/io/PrintStream.html#flush%28%29

Au moins tu seras sur de l'ordre d'affichage. Après pour le "f" je cherche encore ><

Messages postés
388
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
15 novembre 2011
53
Parce que pour le coup il s'arrête avant d'afficher le "l: 3" dans notre cas, il peut pas finir sur un "d", il manque au moins 2 lignes après.
Messages postés
150
Date d'inscription
lundi 5 novembre 2007
Statut
Membre
Dernière intervention
28 novembre 2011
17
Merci beaucoup Defouille pour ta réponse. Mais voila j'ai trouvé ou c'atait le beug.

En fait je me ss trompé dans la condition du while fallait plutôt faire :
while ((!findSRC) || (l<s))


Autrement on se trouve dans une boucle infinit et la condition du if dépend d'un vecteur ayant le l pour indice, donc il s'est bloqué! je me demande pourquoi est ce que je n'ai pas eu l'erreur "out of index"