IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Statistiques simples sur des écoles


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 49
    Points : 24
    Points
    24
    Par défaut Statistiques simples sur des écoles
    Bonjour. voici mon probleme :

    Je dois faire un logiciel qui fait des satistiques basiques sur des eleves : nombre d'enfants par niveau ( cp -> cm2 ) et par ecole.
    mon fichier csv est constitué ansi :
    ex :
    nom ; prenom ; niveau ; code_ecole
    jean ; dupont ; cm1 ;zzzzz

    et j'aimerais faire des stats afin de completer ce fichier csv :
    code_ecole ; cp ; ce1 ; ce2 ; cm1 ; cm2 ; total
    zzzzzzzzzzz; 30 ; 25 ; 24 ; 26 ; 22 ; 127
    yyyyyy
    xxxx
    ...

    j'ai beau y reflechir, je ne trouve pas de solution pour faire ca.

  2. #2
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    On va avoir un liste statistique par école.
    Sachant qu'on
    code_ecole ; cp ; ce1 ; ce2 ; cm1 ; cm2 ; total
    on peut crée un tableau de manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int[] statisque = new int[6];
    public static int CP = 0;
    public static int CE1 = 1;
    public static int CE2 = 2;
    public static int CM1 = 3;
    public static int CM2 = 4;
    public static int TOTAL = 5;
    Quand on va lire une ligne de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nom ; prenom ; niveau ; code_ecole
    On va faire un switch en fonction du niveau (Pour le moment on oublie le problème du code école):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    statisque[TOTAL ]+=1;
    switch (niveau) {
             case "cp":
                 statisque[CP]+=1;
                 break;
             case "ce1":
                 statisque[CE1 ]+=1;
                 break;
             case "ce2":
                 statisque[CE2]+=1;
                 break;
             case "cm1":
                 statisque[CM1]+=1;
                 break;
             case "cm2":
                 statisque[CM2]+=1;
                 break;
             default:
         }
    Note : Valable uniquement avec Java 7 ou supérieur, sinon il faut faire avec des ifPour la problématique des écoles, le plus simple est d'utilisé une Map<String,Statistique> .
    L'objet statistique contiendra le tableau. Et la création de la Map a déjà été couvert dans les exemples que je t'ai donnée sur d'autres sujets.


    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 49
    Points : 24
    Points
    24
    Par défaut
    Merci beaucoup, je vais essayer de mettre tout ca en place.

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 974
    Points : 1 825
    Points
    1 825
    Par défaut
    en utilsant l'API Stream (java 8) et en écrivant "collect" qui va bien, tu pourras obtenir tes stats dans une Map<String,Map<String,Integer>> avec la première String = le nom de l'école, la deuxième String = le niveau, et l'Integer = nb élèves

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 49
    Points : 24
    Points
    24
    Par défaut
    plawyx : malheureusement j'ai java 7 et je n'ai pas les droits d'instalation sur mon poste.

    kolodz : Je ne comprends pas tres bien ce que je dois faire avec le tableau.
    Et aussi, pourquoi donner des valeurs a cp/ce1/ce2 ... ? (cp=0,ce1=1,ce2=2 ....) Pourquoi ne pas tous les mettres a 0 ?

  6. #6
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Le tableau à 6 cases. J'ai affecté les valeurs de CP/CE1/CE2... pour que chacune correspondent à une case du tableau.
    Sachant que la premier case de ce tableau est 0 et va jusqu'à 5 (car 6 cases incluant le 0)
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 49
    Points : 24
    Points
    24
    Par défaut
    ah d'accord je pensais que tu ne les avait pas encore affecté.
    C'est le fait d'avoir mis ces "int" en "public static" qui fait l'affectation ? car je pensais que "public static int CP=0" revenait a peu pres a faire "int CP=0"

  8. #8
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Ce qui fait l'affectation c'est la partie suivante : =0;Cependant, la partie public static indique que cette variable est visible à extérieure de la classe et n'est pas dépendante d'une instance de celle-ci. C'est une valeur commun à toute tes instances.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 49
    Points : 24
    Points
    24
    Par défaut
    Donc en fait, à l'image de la solution que tu m'as donné pour gerer mes doublons, il faut que mon programme : (corriger moi si je me trompe ou si j'ai oublié qqch)

    -lis le fichier ligne par ligne.
    -creer un objet Ecole par code_ecole (l'objet a en parametre Code_ecole et Niveau)
    -placer ces objets dans une map
    -Faire un switch sur le Niveau pour mettre a jour le tableau de statistique
    -Si je ne me trompe pas, mes objets Ecoles devront etre stocker dans une Map, afin de parcourir la map et les println();. (et de verifier si le code_ecole est deja present ou non dans la map lors de la lecture)
    -Il faut aussi creer une methode getNombreEleve() par element du tableau statistique afin de les println

  10. #10
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    -creer un objet Ecole par code_ecole (l'objet a en parametre Code_ecole et Niveau)
    Non, juste le code école.
    Un objet école doit être capable de mémorisé les statistique pour l'ensemble de ses niveaux.

    -Faire un switch sur le Niveau pour mettre a jour le tableau de statistique
    Oui, celui-ci dans une fonction de l'objet école. Par exemple, ajoutOccurenceNiveau(niveau).

    -Si je ne me trompe pas, mes objets Ecoles devront etre stocker dans une Map, afin de parcourir la map et les println();. (et de verifier si le code_ecole est deja present ou non dans la map lors de la lecture)
    En effet, il serai bien vue d'avoir une Map permettant de récupérer l'objet école, si celui-ci existe déjà.

    -Il faut aussi creer une methode getNombreEleve() par element du tableau statistique afin de les println
    Pas nécessairement, mais c'est possible oui.

    Commence par développer quelque chose et dis nous ce qui te bloque.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 49
    Points : 24
    Points
    24
    Par défaut
    Je crois que je m'enbrouille dans mon code >.< Je trouve les Maps dur a manipuler :/

    Voici ce que j'ai fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    //Class Main
     
                             CSVReader reader2 = new CSVReader(new FileReader(cheminCSV+"Eleves_"+Annee+".dbf"),';','\\',1);
    			 String [] nextLine2;
    			 List<Statistique> listeCodeEcole = new ArrayList<Statistique>();
     
    			 while ((nextLine2 = reader.readNext()) != null){	              
    					Statistique Ecole = new Statistique(nextLine2[3]);
     
    					listeCodeEcole.add(Ecole);
    			  }
     
    			 Map<String,List<Enregistrement>> MapEleve = new HashMap<String,List<Enregistrement>>();
     
    			 for(Statistique ligne : listeCodeEcole){
    					if(MapEleve.get(ligne.getCodeEcole())== null){
    						List<Statistique> listeEcole = new ArrayList<Statistique>();
    						listeEcole.add(ligne);
    						MapEleve.put(ligne.getCodeEcole(),listeEcole );    //.put est sousligné rouge
    						ajoutOccurenceNiveau(ligne.getNiveau());      //getNiveau est sousligné rouge
    					}
    					else{
    						ajoutOccurenceNiveau(ligne.getNiveau()}      //getNiveau est sousligné rouge
     
    			 }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    public class Statistique {
     
    		String CodeEcole;
    	 int[] Statistique = new int[10];
    	 public static int TPS = 0;
    	 public static int PS = 1;
    	 public static int MS = 2;
    	 public static int GS = 3;
    	 public static int CP = 4;
    	 public static int CE1 = 5;
    	 public static int CE2 = 6;
    	 public static int CM1 = 7;
    	 public static int CM2 = 8;
    	 public static int TOTAL = 9;
     
    	  public Statistique(String codeEcole){
     
    		 CodeEcole = codeEcole;
    	 }
     
    	 public String getCodeEcole(){
     
    		 return CodeEcole;
    	 }
     
    	 public String getNiveau(String Niveau){
     
    		 return Niveau;
    	 }
     
    	 public void ajoutOccurenceNiveau(String niveau){
     
    		 Statistique[TOTAL]+=1;
    		 switch (niveau) {
    		 case "TPS":
                     Statistique[TPS]+=1;
                     break;
    		 case "PS":
                     Statistique[PS]+=1;
                     break;
    		 case "MS":
                     Statistique[MS]+=1;
                     break;
    		 case "GS":
                     Statistique[GS]+=1;
                     break;
    		 case "CP":
    	         Statistique[CP]+=1;
    		 break;
                     case "CE1":
            	 Statistique[CE1 ]+=1;
    	         break;
    		 case "CE2":
    		 Statistique[CE2]+=1;
    		 break;
    		 case "CM1":
    		 Statistique[CM1]+=1;
            	 break;
    		 case "CM2":	
    		 Statistique[CM2]+=1;
    		 break;
    		 default:
                  }
    		  }
    }
    Voila, je voulais savoir si ce que je suis entrain de faire a un sens.
    Et j'ai aussi 1 ou 2 petit soucis qui font que je n'ai pas essayer de compiler : ".put" est souligné en rouge et je ne sais pas comment faire pour qu'il ne le soit plus
    Mon getNiveau est souligné rouge.

  12. #12
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    L'appel de put() ne compile pas parce que, d'une part, tu déclares ta map par Map<String,List<Enregistrement>> MapEleve, donc ses clefs doivent être des String et les valeurs associées des List<Enregistrement>, et que d'autre part, tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    List<Statistique> listeEcole = new ArrayList<Statistique>();
    listeEcole.add(ligne);
    MapEleve.put(ligne.getCodeEcole(),listeEcole );    //.put est sousligné rouge
    donc tu essayes de mettre un List<Statistique> en valeur, qui n'est pas un List<Enregistrement>

    Le principe de base d'une Map est simple. On y met une valeur associée à une clef par map.put( clef, valeur ) et on récupère une valeur associée au préaliable à une clef par valeur = map.get( clef ).

    Le principe de ce que tu cherches à faire se fait de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Machin machin = ...; // on a un élément de type Machin
     
    List<Machin> machins = map.get(clef); // on cherche la liste de Machin déjà associée avec notre clef
    if ( machins==null ) { // s'il n'y en a pas
        // on en créé une
        machins = new ArrayList<>(); // ArrayList, ou LinkedList, ou n'importe quelle List
        map.put( clef, machins ); // et on la stocke dans la map, associée à la clef
    }
    machins.add( machin ); // on ajoute l'élément de type Machin à la liste
    Ce qui permet ensuite dans une autre partie du code (qui a accès à la Map évidement) de récupérer la liste de tous les Machin associés à la clef par
    [CODE]List<Machin> machins = map.get( clef );
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  13. #13
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Ton code est trop compliqué par rapport à ce que tu veux faire.

    Fait un main :

    1. Tu crée une école en dur
    2. Tu affiche son nom en console.
    3. Tu ajoute ajout une occurrence à une note pour un niveau.
    4. Tu affiche ne nombre d’occurrence pour tout les niveau pour l'école.
    5. Tu crée une Map avec pour clé le nom de l'école et en valeur l'objet.
    6. Tu ajout l'école précédent à la liste.
    7. Tu crée une fonction qui ajoute une statique à une école. Via la fonction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void ajoutStatistique(String niveau, String ecole, Map<String,Ecole> listeEcoles);
    La méthode doit :
    a. Crée l'école si nécessaire et l'ajouter à la map.
    b. Ajouter une occurrence de note.
    8. Faire une fonction qui affiche pour toutes les écoles de la liste toutes les notes. (Doit nécessairement reprendre ce qui a été fait en .4)
    9. Tu réalise la lecture de ton fichier en reprenant tout ce que tu as fait avant.

    Règle à suivre :
    1. Pour chaque étape tu lance ton application. Celle-ci doit compiler, se lancer et obtenir le résultat attendu.
    2. Tout le code qui n'est pas utile pour l'étape en cours doit être supprimer. (Ou dans un autre projet.)
    3. Pour les étapes 1 à 8, le main ne doit faire qu'un seul appel de fonction. Une ligne !
    4. Code commenté : Le pourquoi tu déclare tel ou tel variable, et pourquoi tel ou tel méthode etc...

    Normalement, l'ensemble des étapes sont de ton niveau et découpé suffisamment pour qu'elle soit facile à débuger si nécessaire.

    Si tu as un problème en suivant ce processus. Indique moi, le code que tu as pour chaque étape. Et ce qui te bloque sur l'étape où il y a un problème.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  14. #14
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 49
    Points : 24
    Points
    24
    Par défaut
    Je viens de finir ma journée, voila ce que j'ai eu le temps de faire :

    etape 1 : fait
    etape 2 : fait
    etape 3 : ou dois-je mettre mon tableau de Niveau ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class test {
    		public static void main(String[] args) {
    			Ecole e = null;
     
    			e = new Ecole("Chanzy", "08000");
     
    		System.out.println(e.getNomEcole()+" "+e.getCodeEcole());
    		}
    	}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    public class Ecole {
     
    	  protected String nomEcole;
    	  protected String codeEcole;
     
    /*int[] Statistique = new int[10];
    	 public static int TPS = 0;
    	 public static int PS = 1;
    	 public static int MS = 2;
    	 public static int GS = 3;
    	 public static int CP = 4;                        // Est-ce ici que je dois le mettre ? 
    	 public static int CE1 = 5;
    	 public static int CE2 = 6;
    	 public static int CM1 = 7;
    	 public static int CM2 = 8;
    	 public static int TOTAL = 9;*/
     
     
     
    	  public Ecole(){
    	    System.out.println("Création d'une ecole !");          
    	    nomEcole = "Inconnu";
    	    codeEcole = "Inconnu";
    	  }
     
    	  public Ecole(String eNom, String eCode){    // ,String Niveau ??
    		  System.out.println("Création d'une ecole avec parametre !");         
    		  nomEcole = eNom;
    		  codeEcole = eCode;
     
    	  }
     
    //---------------------Accesseurs---------------------------	    
     
    	  //Retourne le nom de l'ecole
    	  public String getNomEcole()  {  
    	    return nomEcole;
    	  }
     
    	  //Retourne le code de l'ecole
    	  public String getCodeEcole()
    	  {
    	    return codeEcole;
    	  }
     
    //---------------------Mutateurs---------------------------
     
    	  public void setNom(String eNom)
    	  {
    	    nomEcole = eNom;
    	  }
    	  //Définit le nom du pays
    	  public void setNomPays(String eCode)
    	  {
    	    codeEcole = eCode;
    	  }
    }

  15. #15
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    etape 3 : ou dois-je mettre mon tableau de Niveau ?
    Ou cela te semble le plus logique ? Test ce qui te semble le plus logique. Si cela ne fonctionne pas et que tu ne sais pas pourquoi.Tu reviens avec "J'ai fait ça, Ça aurai du fonctionné comme ça. Mais j'ai ce résultat."

    Question sur ce qui est déjà fait :
    Pourquoi "setNomPays" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	  //Définit le nom du pays
    	  public void setNomPays(String eCode)
    	  {
    	    codeEcole = eCode;
    	  }
    Tu accède à la variable codeEcole non ?

    Pourquoi tu as un code et un nom pour l'école ? Tu peux très bien avoir un objet école où le nom sera le code que tu as dans ton CSV.
    Soit tu supprime le code, soit tu supprime le nom. Sauf si tu as les deux à remplir dans ton problème.
    Si tu conserve les deux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(e.getNomEcole()+" "+e.getCodeEcole());
    Doit-être fait en un seul appel à l'objet école. Sinon, tu va cette concaténation à chaque fois que tu va vouloir afficher le code et le nom.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  16. #16
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 49
    Points : 24
    Points
    24
    Par défaut
    Bonjour. Le "setNomPays" est une erreur. ( au lieu de de creer un nouveau main, j'ai repris un ancien en supprimant ce qui ne servait a rien, j'ai oublié de renommer celui ci )
    Effectivement, jen'ai pas besoin du nom de l'ecole, juste du code. J'ai donc supprimer tout ce qui avait un rapport avec le nom.
    J'ai essayer d'appeler le codeEcole et le niveauEcole en une seule fois, mais apparement je ne peut pas mettre 2 return, et je ne peut pas mettre de "System.out.println" car il demande un string.
    J'ai reussi a afficher un niveau, mais je n'arrive pas a afficher tous les niveaux du tableau.
    Et pour ma part, j'aurais mis le tableau dans la creation de l'ecole, afin de creer un tableau par ecole. Mais j'ai eu une erreur en le placant la bas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    package test;
     
    public class test {
    		public static void main(String[] args) {
    			Ecole e = null;
    			//Ecole f = null;
     
    			e = new Ecole("Chanzy", "TPS");
    			//f = new Ecole("Chanzy", "PS");
     
    		System.out.println(e.getCodeEcole()+" "+e.getNiveauEcole());
    	  //System.out.println(e.getNbOccurence());
    	  //System.out.println(Statistique[1]);           // Pas acces au tableau depuis ici
    		}
    	}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    public class Ecole {
     
     
    	  protected String codeEcole;
    	  protected String niveauEcole;
     
    	  public int[] Statistique = new int[10];
    			 public static int TPS = 0;
    			 public static int PS = 1;
    			 public static int MS = 2;
    			 public static int GS = 3;
    			 public static int CP = 4;
    			 public static int CE1 = 5;
    			 public static int CE2 = 6;
    			 public static int CM1 = 7;
    			 public static int CM2 = 8;
    			 public static int TOTAL = 9;
     
    	  public Ecole(){
    	    System.out.println("Création d'une ecole !");          
    	    codeEcole = "Inconnu";
    	    niveauEcole = "Inconnu";
    	  }
     
    	  public Ecole(String eCode,String eNiveau){
    		  System.out.println("Création d'une ecole avec parametre !"); 
     
    		  codeEcole = eCode;
    		  niveauEcole = eNiveau;
     
    		  Statistique[TOTAL]+=1;
    			 switch (niveauEcole) {
    				 case "TPS":
    		             Statistique[TPS]+=1;
    		             break;
    				 case "PS":
    		             Statistique[PS]+=1;
    		             break;
    				 case "MS":
    		             Statistique[MS]+=1;
    		             break;
    				 case "GS":
    		             Statistique[GS]+=1;
    		             break;
    				 case "CP":
    			         Statistique[CP]+=1;
    			         break;
    		         case "CE1":
    		        	 Statistique[CE1 ]+=1;
    			         break;
    				 case "CE2":
    					 Statistique[CE2]+=1;
    					 break;
    				 case "CM1":
    					 Statistique[CM1]+=1;
    		        	 break;
    				 case "CM2":	
    					 Statistique[CM2]+=1;
    					 break;
    				 default:
    	             }
    	  		}
     
     
    //---------------------Accesseurs---------------------------	    
     
    	  //Retourne le nom de l'ecole
     
     
    	  //Retourne le code de l'ecole
    	  public String getCodeEcole()
    	  {
    		  return codeEcole;
    	  }
    	  public String getNiveauEcole()
    	  {
    		  return niveauEcole;
    	  }
    	/*  public String getNbOccurence()         Malgré mon String.valueOf,  il me dit qu'il faut renvoyer un string      
    	  {
    		for (int i=0;i<Statistique.length;i++){
    		  	return (String.valueOf(Statistique[i]));
    		}
     
    	  }*/
     
    	  /*public String getStatsEcole()    on ne peut pas mettre 2 return dans le meme accesseur ?
    	   {
    	    	System.out.println(codeEcole);
    	    	return niveauEcole;    
    	    }*/
     
     
    //---------------------Mutateurs---------------------------
     
    	  //Définit le nom du pays
    	  public void setCode(String eCode)
    	  {
    	    codeEcole = eCode;
    	  }
    }

    EDIT : j'ai réussi a afficher toutes les elements du tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     public void getNbOccurence()       
    	  {
    		for (int i=0;i<Statistique.length;i++){
    			String test = String.valueOf(Statistique[i]);
    			System.out.print(test+" ");
    		  	//return test;
    		}

  17. #17
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    package test;
     
    public class test {
    		public static void main(String[] args) {
    			Ecole e = null;
    			//Ecole f = null;
     
    			e = new Ecole("Chanzy", "TPS");
    			//f = new Ecole("Chanzy", "PS");
     
    		System.out.println(e.getCodeEcole()+" "+e.getNiveauEcole());
    	  //System.out.println(e.getNbOccurence());
    	  //System.out.println(Statistique[1]);           // Pas acces au tableau depuis ici
    		}
    	}
    Pourquoi un niveau d'école ? Dans le constructeur ?
    la variable statistique est lié à une instance d'école tu dois passer par celle-ci pour accéder au statistique correspondante.
    Note : une variable n'a pas de majuscule par convention, donc pas de S à statistique.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      public String getNbOccurence()     //    Malgré mon String.valueOf,  il me dit qu'il faut renvoyer un string      
    	  {
    		for (int i=0;i<Statistique.length;i++){
    		  	return (String.valueOf(Statistique[i]));
    		}
     
    	  }
    Le compilateur crie, car tu n'as pas de return dans le cas où statistique est de taille vide.
    Mais la méthode est incorrecte dans sa logique métier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public String getStatsEcole()   // on ne peut pas mettre 2 return dans le meme accesseur ?
    	   {
    	    	System.out.println(codeEcole);
    	    	return niveauEcole;    
    	    }
    Tu peux mettre plusieurs return, mais uniquement si ceux-ci sont dans des branches logiques différentes. Par exemple dans le cas d'un [c]if else[c].

    Cependant, tu es en train de faire :

    4. Tu affiche ne nombre d’occurrence pour tout les niveau pour l'école.
    Alors que
    3. Tu ajoute ajout une occurrence à une note pour un niveau.
    n 'est pas réalisé.

    Donc supprime le code qui est lié à 4 et fait 3.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  18. #18
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 49
    Points : 24
    Points
    24
    Par défaut
    Si j'ai mis NiveauEcole dans le constructeur, c'est parce que je pensais que c'était grace a cela qu'on allait recuperer le Niveau lors de la lecture du fichier.
    je ne vois pas comment recuperer le NiveauEcole et faire un switch dessus si je ne recupere pas le niveau en le mettant dans le contructeur

  19. #19
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Ton école est sensé avoir plusieurs niveau non ?
    Pourquoi ne pas faire une méthode qui prend en paramètre ce niveau pour faire l'ajout ? Car, tu peux faire une fonction avec un paramètre non ?

    Pour le moment, fait juste les étapes une par une sans chercher à résoudre le problème globale. La manière dont du va récupérer le niveau n'est pas la question dans cette étape.
    Pour le moment, tu dois juste avoir un moyen de dire à ton objet Ecole, incrément tel niveau.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  20. #20
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 49
    Points : 24
    Points
    24
    Par défaut
    Voilà ce que j'ai fait : (lire les commentaire du code)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    //class main
    CSVReader reader2 = new CSVReader(new FileReader(cheminCSV+"Eleves_"+Annee+".dbf"),';','$',1);
    			 String [] nextLine2;
    			 List<Ecole> listeCodeEcole = new ArrayList<Ecole>();
     
     
     
    			 while ((nextLine2 = reader2.readNext()) != null){	    //on ajoute la ligne dans un tableau<Ecole>
     
    					Ecole Ecole = new Ecole(nextLine2[3],nextLine2[4]);   //créer les ecole
     
    					listeCodeEcole.add(Ecole);     //ajoute les ecoles dans une liste<Ecole>
    			  }
     
    			 HashMap<String, Ecole> mapEcoles = new HashMap<String, Ecole>(); //Creer la map
     
    			 for(Ecole ligne : listeCodeEcole){    //pour chaque ecole dans la liste<Ecole>
     
    					if(mapEcoles.get(ligne.getCodeEcole())== null){ //si l'ecole n'est pas dans la map
     
    						Ecole clé=new Ecole(ligne.getCodeEcole(),ligne.getNomEcole()); //creer l'ecole
    						mapEcoles.put(ligne.getNomEcole(),clé ); //ajoute l'ecole a la map
    						clé.Niveau(ligne.getNiveau());  //je ne sais pas comment récupérer le niveau pour incrémenté le tableau
    					}
    					else{
    						Ecole.Niveau(ligne.getNiveau());
    				 }
     
    			 }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    public class Ecole {
     
     
    	  protected String codeEcole;
    	  protected String nomEcole;
     
    	  public int[] statistique = new int[10];
    			 public static int TPS = 0;
    			 public static int PS = 1;
    			 public static int MS = 2;
    			 public static int GS = 3;
    			 public static int CP = 4;
    			 public static int CE1 = 5;
    			 public static int CE2 = 6;
    			 public static int CM1 = 7;
    			 public static int CM2 = 8;
    			 public static int TOTAL = 9;
     
     
     
    		public Ecole(String eCode,String eNom){
     
    			System.out.println("Création d'une ecole avec parametre !"); 
    			codeEcole = eCode;
    			nomEcole = eNom;
    		}
     
    		public void Niveau(String eNiveau){   
     
    		statistique[TOTAL]+=1;
    		 switch (eNiveau) {
    			 case "TPS":
    	            statistique[TPS]+=1;
    	            break;
    			 case "PS":
    	            statistique[PS]+=1;
    	            break;
    			 case "MS":
    	            statistique[MS]+=1;
    	            break;
    			 case "GS":
    	            statistique[GS]+=1;
    	            break;
    			 case "CP":
    		         statistique[CP]+=1;
    		         break;
    	        case "CE1":
    	       	 statistique[CE1 ]+=1;
    		         break;
    			 case "CE2":
    				 statistique[CE2]+=1;
    				 break;
    			 case "CM1":
    				 statistique[CM1]+=1;
    	       	 break;
    			 case "CM2":	
    				 statistique[CM2]+=1;
    				 break;
    			 default:
    	        }
    			 for(int i= 0; i<statistique.length;i++){
    				 System.out.print(statistique[i]+" ");
    			 }
    		  }
     
     
     
    //---------------------Accesseurs---------------------------	     
     
    	  //Retourne le code de l'ecole
    	  public String getCodeEcole()
    	  {
    		  return codeEcole;
    	  }
    	  public String getNomEcole()
    	  {
    		  return nomEcole;
    	  }}

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Création de graphe basé sur des statistiques
    Par Tigrou35 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 11/10/2007, 11h34
  2. Statistiques sur des Etats
    Par Gerard lambert dans le forum IHM
    Réponses: 7
    Dernier message: 27/07/2006, 08h06
  3. Statistiques sur des tables
    Par nuke_y dans le forum Oracle
    Réponses: 2
    Dernier message: 24/04/2006, 14h02
  4. Réponses: 4
    Dernier message: 19/02/2006, 18h18
  5. Question simple sur la libération des objets
    Par gibet_b dans le forum Langage
    Réponses: 2
    Dernier message: 12/07/2004, 10h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo