Petit problème en java

Bonsoir,

Je rencontre un petit problème en Java, la moyenne que j'essaye de calculer ne correspond pas aux valeurs de mon array!

Je pense que le problème est au niveau de l'itération non ?

Voici ce que j'ai codé tout à l'heure...

Code:
import java.util.Scanner;

public class lol {
    public static void main(String[] args) {
        Scanner enter = new Scanner(System.in);


        int sousmenu = 0;
        boolean arret = false;
        int tab[] = {3,16,32,67,178,13};
        int somme = 0;
        float moyenne = 0;


        while (!arret){
            System.out.println("1 - le nombre le plus Grand : ");
            System.out.println("2 - le nombre le plus Petit :");
            System.out.println("3 - la somme des nombres : ");
            System.out.println("4 - la moyenne des nombres : ");
            System.out.println("5 - Afficher la différence entre le plus Grand et le plus Petit : ");
            System.out.println("6 - Afficher les nombres pairs : ");
            System.out.println("7 - Afficher les nombres impairs : ");
            System.out.println("8 - Afficher le tableau : ");
            System.out.println("9 - Quitter");


            System.out.println("--------------------");
            System.out.print("Taper votre choix svp : ");
            sousmenu = enter.nextInt();
            switch(sousmenu) {
                case 1: {
                    int grand = 0;
                    System.out.println("---Option 1---");
                    for (int i = 0; i < tab.length; i++) {
                        if (tab[i] > grand) {
                            grand = tab[i];
                        }
                    }
                    System.out.println("le nombre le plus grand est => " + grand);
                    System.out.println("--------------------");
                }
                break;

                case 2: {
                    int petit = 99;
                    System.out.println("---Option 2---");
                    for (int i = 0; i < tab.length; i++) {
                        if (tab[i] < petit) {
                            petit = tab[i];
                        }
                    }
                    System.out.println("le nombre le plus petit est => " + petit);
                    System.out.println("--------------------");
                }
                break;

                case 3: {
                    System.out.println("---Option 3---");

                    for (int i = 0; i < tab.length; i++) {
                        somme = somme + tab[i];
                    }
                }
                System.out.println("le nombre Total est => " + somme);
                System.out.println("--------------------");

                break;

                case 4 : {
                    System.out.println("---Option 4---");

                    for (int i = 0; i < tab.length; i++) {
                        somme = somme + tab[i];
                    }

                    for (int j = 0; j < tab.length; j++) {
                        moyenne = somme / tab.length;
                    }
                }

                System.out.println("la Moyenne est => " + moyenne);
                System.out.println("--------------------");
                break;
 
Là suite (....)

Code:
case 5 : {
                    System.out.println("---Option 5---");
                    int grand = 0;

                    for(int i = 0 ; i<tab.length; i++){
                        if(tab[i] > grand){
                            grand = tab[i];
                        }
                    }

                    int petit = 99;
                    for(int j = 0 ; j<tab.length; j++){
                        if(tab[j] < petit){
                            petit = tab[j];
                        }
                    }

                    int diff = grand - petit ;
                    System.out.println("la différence est de => " + diff);
                    System.out.println("--------------------");
                }
                break;

                case 6 : {
                    System.out.println("---Option 6---");
                    for(int i = 0 ; i<tab.length; i++){
                        if((tab[i] % 2 == 0)){
                            System.out.println("\t voici les nombres pairs : " + tab[i]);
                        }
                    }
                }
                break;

                case 7 : {
                    System.out.println("---Option 6---");
                    for(int i = 0 ; i<tab.length; i++){
                        if((tab[i]) % 2 != 0){
                            System.out.println("\t voici les nombres pairs : " + tab[i]);
                        }
                    }
                }
                break;

                case 8 : {
                    for(int i = 0 ; i < tab.length; i++){
                        System.out.println("\t => " + tab[i]);

                    }

                }
                break;

                case 9 : {
                    arret = true;
                    System.out.print("Vous quittez le programme ");
                    break;
                }

                default : System.out.println("entrez un choix entre 1 et 9 ");

                break;

            }

        }

    }
}
 
Salam Farid_h,

J'y suis arrivé au boulot tout à l'heure. J'avais en fait mis deux boucles. Il en faut pas lorsqu'on calcule une moyenne.

Donc dans mon case 4, j'initiale ma somme à 0 puis je fais une boucle dans mon array puis je sors de ma boucle et je calcule la moyenne.
PHP:
case 4:
                    System.out.println("Option 4 : ");
                    int add = 0;
                    for (int i = 0; i < tab.length; i++) {
                        add = add + tab[i];
                    }
                    moyenne = (float) add / tab.length;

                    System.out.println("la moyenne total est => " + moyenne);

                break;
 
Pour ceux que ça intéresse voici mon algo.

PHP:
import java.util.Scanner;


public class lol {
    public static void main(String[] args) {
        Scanner enter = new Scanner(System.in);
        int choix = 0;
        int tab[] = {16, 32, 64, 15, 3, 9};
        int max = 0;
        int min = 99;
        int somme = 0;
        float moyenne = 0;

        do {
            System.out.println("----Menu----");
            System.out.println("1) ---> Nombre le plus Grand");
            System.out.println("2) ---> Nombre le plus Petit");
            System.out.println("3) ---> Somme des Nombres");
            System.out.println("4) ---> Trouver la Moyenne");
            System.out.println("5) ---> Différence entre le plus Grand et le plus Petit");
            System.out.println("6) ---> Trouver les nombres Pairs");
            System.out.println("7) ---> Trouver les nombres Impairs");
            System.out.println("8) ---> Afficher le tableau ");
            System.out.println("9) ---> Quitter le programme  ");
            System.out.println("*****************************");

            System.out.print("Entrer votre choix svp : ");
            choix = enter.nextInt();

            switch (choix) {
                case 1:
                    System.out.println("Option 1 : ");
                    for (int i = 0; i < tab.length; i++) {
                        if (tab[i] > max) {
                            max = tab[i];
                        }
                    }
                    System.out.println("le nombre le plus grand est => " + max);
                break;

                case 2:
                    System.out.println("Option 2 : ");

                    for (int i = 0; i < tab.length; i++) {
                        if (tab[i] < min) {
                            min = tab[i];
                        }
                    }
                    System.out.println("le nombre le plus petit est => " + min);
                break;

                case 3:
                    System.out.print("Option 3 : ");
                    for (int i = 0; i < tab.length; i++) {
                        somme = somme + tab[i];
                    }
                    System.out.println("la somme total est => " + somme);
                break;

                case 4:
                    System.out.println("Option 4 : ");
                    int add = 0;
                    for (int i = 0; i < tab.length; i++) {
                        add = add + tab[i];
                    }
                    moyenne = (float) add / tab.length;

                    System.out.println("la moyenne total est => " + moyenne);

                break;

                case 5:
                    System.out.println("Option 5 : ");

                    for(int i = 0 ; i<tab.length ; i++){
                        if(tab[i] > max){
                            max = tab[i];
                        }
                    }

                    for(int i = 0 ; i<tab.length; i++){
                        if(tab[i] < min){
                            min = tab[i];
                        }
                    }
                    int diff = max - min ;
                    System.out.println("la différence est => " +  diff);

                break;

                case 6 :
                    System.out.println("Option 6 : ");
                    for(int i = 0 ; i<tab.length ; i++){
                        if(tab[i] % 2 == 0){
                            System.out.println("\t les nombres pairs " + tab[i]);

                        }
                    }
                break;

                case 7 :
                    System.out.println("Option 7 : ");
                    for(int i = 0 ; i<tab.length ; i++){
                        if(tab[i] % 2 != 0){
                            System.out.println("\t les nombres impairs " + tab[i]);

                        }
                    }
                break;

                case 8 :
                    System.out.println("Option 8 : ");
                    for(int i = 0 ; i<tab.length ; i++){
                        System.out.println("\t" + tab[i]);
                    }
                break;

                case 9 :
                    System.out.println("Option 9 : ");
                    System.out.println("Vous quittez le programme...");
                break;
            }

        } while (choix != 9);
    }

}
 
Okay, le code est bon... mais que se passera-t-il si l'array 'tab' est vide (0 elements)?

S'il n'y a pas de valeur dans notre array, le résultat sera néant ?
Dans Python, lorsque les éléments sont vides on utilise la fonction append exemple tab.append qui ajoutera un élément dans la liste . Sais-tu comment appelle-t-on cette fonction en java ? add je crois ???
 

farid_h

<defunct>
Contributeur
S'il n'y a pas de valeur dans notre array, le résultat sera néant ?
Dans Python, lorsque les éléments sont vides on utilise la fonction append exemple tab.append qui ajoutera un élément dans la liste . Sais-tu comment appelle-t-on cette fonction en java ? add je crois ???
C'est pas la ou je veux en venir.

Ton programme qui calcule la moyenne de 'tab'.. il donne quoi si 'tab' est vide et contient 0 elements?
 
Si je mets {0} dans mon tableau il m'affiche 0.0
Si je mets rien {}, il me met NaN
 

Pièces jointes

  • 1.png
    1.png
    49.3 KB · Affichages: 7
  • 2.png
    2.png
    48.7 KB · Affichages: 8

farid_h

<defunct>
Contributeur
Si je mets {0} dans mon tableau il m'affiche 0.0
Si je mets rien {}, il me met NaN
Et pourquoi il met NaN? Est-ce que c'est un resultat sensible?

Changeons l'enonce du probleme: s'il n'y a pas d'elements, la moyenne sera par definition 0.0. Comment modifieras tu le programme dans ce cas la (petit exercice rapide)?
 

oulid

VIB
Et pourquoi il met NaN? Est-ce que c'est un resultat sensible?

Changeons l'enonce du probleme: s'il n'y a pas d'elements, la moyenne sera par definition 0.0. Comment modifieras tu le programme dans ce cas la (petit exercice rapide)?
On obtient NaN pour certaines opérations qui sont des indéterminées mathématiques : 0/0, ∞-∞, ∞/∞, 0*∞

NaN : Not a Number
 
Haut