Programmation java

V4 -  
scriptiz Messages postés 1424 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

je dois faire un mini programme qui calcule une moyenne de 4 notes avec une boucle, ça doit être tout simple.

Pour le moment j'ai fait ça, qu'est-ce qu'il y a de faux ? (je suis débutant, je viens de commencer la prog java)

Scanner readline = new Scanner(System.in);

double moyenne, note1=0.0, note2=0.0, note3=0.0, note4=0.0;


do
{

System.out.println("Entrez la note 1 : ");
note1 = readline.nextDouble();
System.out.println("Entrez la note 2 : ");
note2 = readline.nextDouble();
System.out.println("Entrez la note 3 : ");
note3 = readline.nextDouble();
System.out.println("Entrez la note 4 : ");
note4 = readline.nextDouble();
moyenne = ((note1 + note2 + note3 + note4)/4);
}

while (moyenne < 6 && moyenne >= 0);

System.out.printf("La moyenne est de " + moyenne);
A voir également:

7 réponses

Ton_Ami Messages postés 135 Date d'inscription   Statut Membre Dernière intervention   28
 
Bonjour,
quand tu le compiles il te dit quoi? que ça marche? c'est en le lançant que tu peux voir si ça fonctionne ;)
Sinon pour ta condition de boucle, tu considères que tant que la moyenne est entre 0 et 6 tu continues? pourquoi cette condition?
Je ne comprends pas trop l'utilité de la boucle, à moins qu'il faille calculer plusieurs fois de suite une moyenne de 4 notes. Mais alors il n'y a que pour le calcul de la dernière moyenne que sa valeur est affichée.

Donc soit tu tires la boucle, et le programme permet de calculer la moyenne de 4 notes et l'affiche.
Soit, on laisse la boucle et on peut calculer plusieurs fois de suite une moyenne de 4 notes (dans ce cas, il faut changer la condition de la boucle car une moyenne peut être entre 0 et 6 sans pour autant nécessiter une nouvelle itération de la boucle, et il faut également mettre le println dans la boucle pour l'imprimer à chaque fois qu'une moyenne est calculée).
Soit on garde la boucle, on calcule que une seule fois une moyenne de 4 notes, et dans ce cas, on fait une boucle qui fait 4 itérations, et on met que un scanner de Double dans la boucle et on met une phrase plus générale genre:

double note;
for (int i = 0; i<4; i++)
{
System.out.println("Valeur de la " + i + "e note: ");
note += readline.nextDouble();
}
double moyenne = note/4.0;
System.out.println("moyenne : " + moyenne);

C'est peut-être pas tout à fait correct mais c'est une idée en gros

J'espère avoir pu t'aider. Si tu as d'autres questions n'hésite pas!
0
pacorabanix
 
je pense que la boucle est pour recommencer son programme tant que la moyenne est valide probablement.

Mais c'est plus joli de remplir 4 variables qui ont le même rôle avec un tableau et un for plutot que 4 variables note1 note2 note 3 note4 c'est sûr ;)
0
V4
 
je comprend pas le :

note += readline.nextDouble();


ca veut dire quoi "+=" ??

merci
0
pacorabanix
 
a += 3;

est un raccourci pour

a = a + 3;

(autrement dit on incrémente la valeur de a par 3)
0
pacorabanix > pacorabanix
 
pardon pour la majuscule au début >< mauvais réflexe
0
V4
 
donc dans ce cas la ça voudrait dire

note = note + readline.nextDouble()

pourquoi tu additionne le scanner ? j'arrive pas à comprendre dsl..
0
Ton_Ami Messages postés 135 Date d'inscription   Statut Membre Dernière intervention   28
 
J'additionne la valeur entrée par l'utilisateur.
Donc par exemple la première fois l'utilisateur entre 5 , puis 7, puis 1, puis 6.
Ce que fait cette ligne c'est qu'il fait: note = note + 5; c'est à dire: 0+5 donc il ya 5 dans la variable note, ensuite on a le 7 qui est tapé donc: note = note +7; c'est à dire 5+7 il y a donc 12 dans la variable, et ainsi de suite jusqu'à ce qu'on a la somme de chaque note entrée. après on peut diviser par 4 pour avoir la moyenne.

Je ne sais pas trop comment expliquer autrement. Tu as compris ou pas? :s
0
pacorabanix
 
en fait il est troublé par le "
+ readline.nextDouble() 
".

on n'ajoute pas readline. On ajoute "le résultat de la fonction membre (méthode) nextDouble() appliquée à l'objet de type Scanner "readline". Comme si tu faisais :
a= readline.nextDouble();
note += a;


mais en condensé
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
V4
 
ouais j'ai compris, super merci beaucoup !
0
Utilisateur anonyme
 
Salut,

readline return un String.

Il faut remplacer readline.nextDouble(); par:

String entree = (readline.next());
double note1 = Double.parseDouble(entree);
.....
....

Mais je ne comprend pas ce que tu veux faire avec

do
{
.....
}while (moyenne < 6 && moyenne >= 0);

Ce ne serait pas plutôt la note entrée que tu voudrais dans les limites 0 à 5 ? (ou 0 à 20 ou ...)

Cordialement,

Dan
0
scriptiz Messages postés 1424 Date d'inscription   Statut Membre Dernière intervention   425
 
danimo, la méthode Scanner.nextDouble() retourne un double contrairement à ce que tu pourrais penser.

La preuve dans la doc :
double	nextDouble() 
          Scans the next token of the input as a double.

https://docs.oracle.com/javase/6/docs/api/java/util/Scanner.html

Il faut cependant faire attention aux exceptions pouvant être lancées par cette méthode dans le cadre d'un programme destiné à la production :

Throws:
InputMismatchException - if the next token does not match the Float regular expression, or is out of range
NoSuchElementException - if the input is exhausted
IllegalStateException - if this scanner is closed
0