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

Résolu/Fermé
wida Messages postés 150 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 28 novembre 2011 - Modifié par wida le 25/08/2010 à 15:25
wida Messages postés 150 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 28 novembre 2011 - 25 août 2010 à 16:07
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

Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
25 août 2010 à 15:45
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 ><

0
Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
25 août 2010 à 15:46
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.
0
wida Messages postés 150 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 28 novembre 2011 17
25 août 2010 à 16:07
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"
0