Do et while
Résolu/Fermé
persepolis7
Messages postés
58
Date d'inscription
mercredi 10 janvier 2018
Statut
Membre
Dernière intervention
16 janvier 2019
-
Modifié le 17 févr. 2018 à 15:51
persepolis7 Messages postés 58 Date d'inscription mercredi 10 janvier 2018 Statut Membre Dernière intervention 16 janvier 2019 - 20 févr. 2018 à 12:54
persepolis7 Messages postés 58 Date d'inscription mercredi 10 janvier 2018 Statut Membre Dernière intervention 16 janvier 2019 - 20 févr. 2018 à 12:54
1 réponse
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
17 févr. 2018 à 16:09
17 févr. 2018 à 16:09
Bonjour,
Le problème ce n'est pas la boucle mais le Scanner dans le cas particulier de
La touche Entrée reste toujours en attente après le
Ce qui fait que
Pour corriger ça je t'invite à toujours utiliser
NB. En pratique, l'usage de la boucle do-while est rarissime dans un programme Java, les boucles les plus utilisées étant (dans l'ordre) : for-each, for, while et en bon dernier do-while.
Le problème ce n'est pas la boucle mais le Scanner dans le cas particulier de
System.in.
nextIntlit juste un entier, or dans la console (System.in) tu tapes un entier + la touche Entrée.
La touche Entrée reste toujours en attente après le
nextIntet est lue avec
choix = sc.nextLine();donc la valeur "oui" ou "non" ne sera pas lue à ce moment là, mais dans le
nextLine()d'après.
Ce qui fait que
choix.equals("oui")est toujours faux car
choixvaut
\r\n(la touche Entrée), ce que tu peux voir en affichant la valeur de choix après l'avoir lue.
Pour corriger ça je t'invite à toujours utiliser
sc.nextLine()dans le cas particulier de
System.inet à utiliser des méthodes de conversions explicites comme
Integer.parseIntpour passer d'un String à un int.
NB. En pratique, l'usage de la boucle do-while est rarissime dans un programme Java, les boucles les plus utilisées étant (dans l'ordre) : for-each, for, while et en bon dernier do-while.
Modifié le 19 févr. 2018 à 20:19
merci pour l'aide j'ai compris.
J'ai une autre question pour tester si une var String n'est pas égale comment on fait ? juste la syntaxe
ex : while(choix.equals("oui"));
mais pour tester l'inverse ?
Tant mieux si c'est rarissime ça m'arrange :))))
19 févr. 2018 à 23:39
Modifié le 20 févr. 2018 à 12:54