La moyenne en java

Fermé
bouchrot Messages postés 352 Date d'inscription mercredi 12 octobre 2011 Statut Membre Dernière intervention 2 janvier 2023 - 30 oct. 2011 à 21:57
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 - 1 nov. 2011 à 11:28
Bonjour,


salut a tous j'ai un problème au moyenne
cette solution qu'on je l'execute il me donne la moyenne = 1.0

int NB;
int i;
double note;
double somme;
double moyenne;
Scanner calculer = new Scanner(System.in);
System.out.println("Saisissez vos notes");
NB = calculer.nextInt();
for( i=0 ; i<NB ; i++)
{
System.out.println("nombre notes" +i);
note = calculer.nextDouble();

}
somme = 0;
somme = somme+i;
moyenne = somme/NB;
System.out.println("la moyenne est :" +moyenne);
}
}

s'il vous plait que quelqu'un m'aide a ce problème

1 réponse

Utilisateur anonyme
1 nov. 2011 à 09:03
Salut,

C'est normal bien entendu et je vais essayer de te faire découvrir pourquoi.

Tout d'abord ce serait mieux de rempacer la demande de saisie System.out.println("Saisissez vos notes"); par exemple par:
System.out.print("Saisissez le nombre de notes: ");
et System.out.println("nombre notes" +i); par:
System.out.print("note " +(i +1) + " : ";

Ce sera bien plus clair.

Maintenant pourquoi le résultat n'est pas bon ?

Dans la boucle for tu saisis tes notes dans la variable note et tu ne les utilises pas.

À la fin de la saisie des NB notes (nb serait mieux pour respecter les conventions de nommage des variables, et encore meilleur nombreDeNotes) note contient la dernière saisie.

Dés que tu as saisi une note tu dois l'ajouter à la variable somme (et certainement pas en faisant somme = somme+i; (i ayant la valeur du nombre de notes -1) mais somme = somme + note; ou mieux: somme += note;

J'attend tes éventuelles questions...

Cordialement,

Dan
3
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
1 nov. 2011 à 11:28
Autre chose qui serait mieux c'est de purger le Scanner par un nextLine après les méthodes nextInt, nextDouble, nextFloat, etc... Sinon le \n que tu as entrés pour valider ta saisie va rester en attente, et décaler tous les nextLine ultérieurs.

Exemple qui ne fonctionne pas (à tester) :

Scanner sc = new Scanner(System.in);
System.out.print("Entrez votre age : ");
int age = sc.nextInt();
System.out.print("Entrez votre nom : ");
String nom = sc.nextLine();
System.out.println("Vous vous appelez "+nom+" et vous avez "+age+" ans");

Exemple qui fonctionne (à tester) :

Scanner sc = new Scanner(System.in);
System.out.print("Entrez votre age : ");
int age = sc.nextInt(); sc.nextLine();
System.out.print("Entrez votre nom : ");
String nom = sc.nextLine();
System.out.println("Vous vous appelez "+nom+" et vous avez "+age+" ans");
0