Programmation java

Fermé
V4 - 27 oct. 2009 à 18:51
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 - 28 oct. 2009 à 09:39
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 lundi 15 juin 2009 Statut Membre Dernière intervention 16 mars 2010 28
27 oct. 2009 à 22:18
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
27 oct. 2009 à 23:14
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
je comprend pas le :

note += readline.nextDouble();


ca veut dire quoi "+=" ??

merci
0
pacorabanix
27 oct. 2009 à 23:15
a += 3;

est un raccourci pour

a = a + 3;

(autrement dit on incrémente la valeur de a par 3)
0
pacorabanix > pacorabanix
27 oct. 2009 à 23:16
pardon pour la majuscule au début >< mauvais réflexe
0
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 lundi 15 juin 2009 Statut Membre Dernière intervention 16 mars 2010 28
27 oct. 2009 à 23:24
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
27 oct. 2009 à 23:27
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
ouais j'ai compris, super merci beaucoup !
0
Utilisateur anonyme
28 oct. 2009 à 03:42
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 dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
28 oct. 2009 à 09:39
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