Se connecter / S'enregistrer
Votre question

le programme fait une boucle de trop

Tags :
  • Java
  • scanner
  • Programme
  • Programmation
Dernière réponse : dans Programmation
27 Février 2012 07:48:51

J'ai un problème avec un programme qui réalise une boucle de trop une fois qu'il veux sortir il repose la question encore une fois et aussi si j'écrie une chaîne de caractère au milieu il répète la question 2 fois sans raison.

Voilà la question en premier :

un programme calculDeMoyenne qui permet de calculer la moyenne de points sur 20 encodés au clavier par l'utilisateur. Le programme demande des notes sur 100 à l'utilisateur, toute valeur ne correspondant pas à un double ou n'étant pas comprise entre 0 et 20 est simplement ignorée.
L'utilisateur peut quitter le programme en tapant la lettre x et peut demander la moyenne sur 100 en tapant la lettre m.


et voilà la réponse qui fonctionne mais pas parfaitement :
  1. import java.util.Scanner;
  2.  
  3. public class MeanCalculator
  4. {
  5. public static void main (String[] args)
  6. {
  7. double sum = 0;
  8. int count = 0;
  9. Scanner scanner = new Scanner (System.in);
  10.  
  11. System.out.println ("Mean Calculator");
  12. boolean end = false;
  13. do
  14. {
  15. System.out.print ("? ");
  16. if (scanner.hasNextDouble())
  17. {
  18. double d = scanner.nextDouble();
  19. if (0 <= d && d <= 20)
  20. {
  21. sum += d;
  22. count++;
  23. }
  24. }
  25. else
  26. {
  27. String s = scanner.nextLine();
  28. if ("x".equals (s))
  29. {
  30. end = true;
  31. }
  32. else if ("m".equals (s))
  33. {
  34. double mean = sum / count;
  35. System.out.println ("Moyenne = " + mean + "/20");
  36. end = true;
  37. }
  38. }
  39. }
  40. while (! end);
  41. System.out.println ("Au revoir");
  42. }
  43. }

Autres pages sur : programme fait boucle

a c 232 L Programmation
27 Février 2012 09:59:37

Salut,

Je pense que c'est parce que tu attends la fin de la ligne (nextLine()) essaie de faire avec next() plutôt ?
27 Février 2012 22:38:19

OmaR a dit :
Salut,

Je pense que c'est parce que tu attends la fin de la ligne (nextLine()) essaie de faire avec next() plutôt ?


Bonjour

merci beaucoup cela fonctionne mais j'aimerai svp comprendre le pourquoi de cette erreur si possible.

Contenus similaires
a c 232 L Programmation
28 Février 2012 00:06:08

nextLine attend une nouvelle ligne, alors que next attend une nouvelle chaine de caractère.
28 Février 2012 06:28:35

OmaR a dit :
nextLine attend une nouvelle ligne, alors que next attend une nouvelle chaine de caractère.



merci beaucoup pour votre aide
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS