La moyenne en java [Fermé]

Signaler
Messages postés
352
Date d'inscription
mercredi 12 octobre 2011
Statut
Membre
Dernière intervention
18 juillet 2020
-
Messages postés
16254
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 février 2021
-
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
A voir également:

1 réponse


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
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
16254
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 février 2021
2 798
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");