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

Résolu
wida Messages postés 150 Date d'inscription   Statut Membre Dernière intervention   -  
wida Messages postés 150 Date d'inscription   Statut Membre Dernière intervention   -
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).
A voir également:

2 réponses

Defouille Messages postés 388 Date d'inscription   Statut Membre Dernière intervention   54
 
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   Statut Membre Dernière intervention   54
 
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   Statut Membre Dernière intervention   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"
0