Java débutant: problèmes avec les boucles
Résolu/Fermé
A voir également:
- Java débutant: problèmes avec les boucles
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Java décompiler - Télécharger - Langages
- Java runtime - Télécharger - Langages
2 réponses
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
Modifié par KX le 14/11/2011 à 23:41
Modifié par KX le 14/11/2011 à 23:41
C'est le nextInt qui pose problème...
À chaque fois que tu tapes un entier au clavier, tu termines la saisie en appuyant sur la touche entrée, cela a pour effet de rajouter un \n à la fin de la chaîne de caractères.
Lorsque tu fais un nextInt, tu récupères les chiffres mais pas le \n, il reste "en attente" et il n'est récupéré qu'avec un nextLine. C'est pour ça que tes nextLine ne marchent pas, c'est parce qu'ils sont décalés, chacun récupérant les \n des nextInt précédents.
Il faut donc penser à rajouter un nextLine "pour du beurre" après chaque nextInt.
Il en va de même pour nextLong, nextFloat, nextDouble etc...
Je n'ai pas vraiment regardé ton code, il y a peut-être d'autres erreurs. Mais corrige déjà ça pour voir si ça te permet d'avancer dans la réalisation de ton programme ;-)
La confiance n'exclut pas le contrôle
À chaque fois que tu tapes un entier au clavier, tu termines la saisie en appuyant sur la touche entrée, cela a pour effet de rajouter un \n à la fin de la chaîne de caractères.
Lorsque tu fais un nextInt, tu récupères les chiffres mais pas le \n, il reste "en attente" et il n'est récupéré qu'avec un nextLine. C'est pour ça que tes nextLine ne marchent pas, c'est parce qu'ils sont décalés, chacun récupérant les \n des nextInt précédents.
Il faut donc penser à rajouter un nextLine "pour du beurre" après chaque nextInt.
Il en va de même pour nextLong, nextFloat, nextDouble etc...
Je n'ai pas vraiment regardé ton code, il y a peut-être d'autres erreurs. Mais corrige déjà ça pour voir si ça te permet d'avancer dans la réalisation de ton programme ;-)
La confiance n'exclut pas le contrôle
Merci de ta réponse.
Je n'ai pas compris pourquoi mais juste en rajoutant un second lm = sc.nextLine(); sous le premier, ça a fonctionné. Sais tu pourquoi?
Je n'ai pas compris pourquoi mais juste en rajoutant un second lm = sc.nextLine(); sous le premier, ça a fonctionné. Sais tu pourquoi?
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
15 nov. 2011 à 00:10
15 nov. 2011 à 00:10
Si tu doubles le nextLine, le premier va prendre le \n comme je l'ai expliqué, et le deuxième prendre la bonne valeur. Par contre ça ne marchera plus si tu donnes n négatif, car tu rentres dans ta boucle while, et tu fais un deuxième nextInt qu'il te faudra également compenser....