Rechercher : dans
Par :

Programmation java

Dernière réponse le 28 oct 2009 à 09:39:09 V4, le 27 oct 2009 à 18:51:40 
 Signaler ce message aux modérateurs

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);

Configuration: Windows Vista
Firefox 3.5.3

Meilleures réponses pour « Programmation java » dans :
2 bons livres pour Java et C++ VoirPour ce qui est de l'api java, pas besoin d'aller chercher loin, le site de sun. Néanmoins, voici un bon livre "Thinking in java" de Bruce Eckels, c'est le meilleur de tout ce que j'ai lu sur java et je le conseille vivement. Auparavant, il avait...
Java - Premier programme VoirPremière application avec Java La première chose à faire est de créer un simple fichier texte (sans mise en forme) et de taper les quelques lignes suivantes : // Votre premiere application en Java class FirstApp { public static void main...
Java - Les packages VoirIntroduction aux packages La programmation Java consiste à créer des classes. Or, étant donné qu'un programme est généralement développé par une équipe de programmeurs, c'est-à-dire plusieurs personnes, le fait de concaténer (mettre bout à bout)...
Les classes Java VoirLa notion d'objet Le langage Java intègre fortement le concept objet, il s'agit donc d'un langage orienté objet (LOO). Le terme langage orienté objet est plus qu'une simple appellation de plus pour désigner un type de langage, il...

1

Ton_Ami, le 27 oct 2009 à 22:18:02

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!

Répondre à Ton_Ami

3

pacorabanix, le 27 oct 2009 à 23:14:37

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 ;)

Répondre à pacorabanix

2

V4, le 27 oct 2009 à 23:13:13

Je comprend pas le :

note += readline.nextDouble();


ca veut dire quoi "+=" ??

merci

Répondre à V4

4

pacorabanix, le 27 oct 2009 à 23:15:36

A += 3;

est un raccourci pour

a = a + 3;

(autrement dit on incrémente la valeur de a par 3)

Répondre à pacorabanix

5

pacorabanix, le 27 oct 2009 à 23:16:12

Pardon pour la majuscule au début >< mauvais réflexe

Répondre à pacorabanix

6

V4, le 27 oct 2009 à 23:20:34

Donc dans ce cas la ça voudrait dire

note = note + readline.nextDouble()

pourquoi tu additionne le scanner ? j'arrive pas à comprendre dsl..

Répondre à V4

7

Ton_Ami, le 27 oct 2009 à 23:24:34

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

Répondre à Ton_Ami

9

pacorabanix, le 27 oct 2009 à 23:27:40

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é

Répondre à pacorabanix

8

V4, le 27 oct 2009 à 23:27:21

Ouais j'ai compris, super merci beaucoup !

Répondre à V4

10

danimo, le 28 oct 2009 à 03:42:36

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

Répondre à danimo

11

 scriptiz, le 28 oct 2009 à 09:39:09

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.

http://java.sun.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

Répondre à scriptiz