Programmation java

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

7 réponses

  1. 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
    1. 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
  2. je comprend pas le :

    note += readline.nextDouble();

    ca veut dire quoi "+=" ??

    merci
    0
    1. a += 3;

      est un raccourci pour

      a = a + 3;

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

    note = note + readline.nextDouble()

    pourquoi tu additionne le scanner ? j'arrive pas à comprendre dsl..
    0
    1. 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
      1. 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
    2. ouais j'ai compris, super merci beaucoup !
      0
      1. 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
        1. 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