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. #21
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Ardennes (Champagne Ardenne)

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

    Informations forums :
    Inscription : Janvier 2015
    Messages : 49
    Par défaut
    Question sans rapport : Est-ce que le fait d'editer le dernier post compte comme un nouveau post ?

  2. #22
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    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 209
    Billets dans le blog
    52
    Par défaut
    Non une édition ne compte pas comme un nouveau post !


    Je préférai honnêtement que tu suive les indication que je te donne sur les étapes. Car, tu aura du code qui fonctionne à la fin. et plus rapidement que tu brule les étapes.

    Je vais donnée le appel que fait le main pour chaque étapes :

    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
     //1. Tu crée une école en dur
    Ecole monEcole = new Ecole("LeNomCodeEcole");
    //2. Tu affiche son nom en console.
    System.out.println(monEcole.getNom());
    //3. Tu ajoute ajout une occurrence à une note pour un niveau.
    monEcole.ajoutOccurenceNiveau("CP");
    //4. Tu affiche ne nombre d’occurrence pour tout les niveau pour l'école.
    System.out.println(ecole.getStatistique());
    //5. Tu crée une Map avec pour clé le nom de l'école et en valeur l'objet.
    Map<String, Ecole> mapEcoles = new HashMap<String, Ecole>();
    //6. Tu ajout l'école précédent à la liste.
    mapEcoles.put(monEcole.getNom(),monEcole);
    //7. Tu crée une fonction qui ajoute une statique à une école. Via la fonction suivante :
    ajouteEcoleNiveau(mapEcoles, "UneAutreEcole", "CE1");
    //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)
    afficheStatistiqueListe(mapEcoles);
    //9. Tu réalise la lecture de ton fichier en reprenant tout ce que tu as fait avant.
    mapEcoles = new HashMap<String, Ecole>(); // Remplace la liste par une nouvelle liste
    CSVReader reader = new CSVReader(new FileReader(cheminCSV+"Eleves_"+Annee+".dbf"),';','$',1);
    while ((nextLine2 = reader2.readNext()) != null){
        ajouteEcoleNiveau(mapEcoles, nextLine2[3], nextLine2[4]);
    }
    afficheStatistiqueListe(mapEcoles);
    Il y a deux fonctions static
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public static void ajouteEcoleNiveau(Map<String,Ecole>,String ecole,String niveau){
        //TODO Méthode à réaliser
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public static void afficheStatistiqueListe(Map<String,Ecole>){
        //TODO Méthode à réaliser
    }
    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. #23
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Ardennes (Champagne Ardenne)

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

    Informations forums :
    Inscription : Janvier 2015
    Messages : 49
    Par défaut
    Bon, je vais encore recommencer alors x) mais demain matin, j'ai finis ma journée.

    Derniere question avant de partir :

    Voila, je voulais avoir votre avis : ca fait un peu plus d'un mois maitenant que j'apprends le java, est-ce que vous trouvez que, pour quelqu'un de mon niveau, 3 jours c'est long pour devellopper un programme comme celui. J'ai l'impression de galerer enormement, et meme de trop, vu que je n'ai personne pour m'apprendre/m'expliquer a part vous.

    Cordialement,
    Bonne soirée

  4. #24
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    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 209
    Billets dans le blog
    52
    Par défaut
    Cela la dépends de ce que tu appel débutant.

    Un personne qui a déjà fait un autre langage de programmation fonctionnel ou objet sera largement avantagé. Pour plusieurs raisons :
    • Il découpera son problème en sous problème jusqu'à avoir quelque chose de très simple à faire.
    • Il sera faire la correspondance de son découpage en fonction
    • Il sera faire abstraction du langage et se basé sur le comportement que son logiciel doit avoir.

    Visiblement tu n'as pas eu de formation sérieuse en informatique.
    En général, on apprends aux étudiants à transformer un problème en un "pseudo code". Celui-ci étant indépendant de tout langage, c'est juste la logique métier découpé très finement. Le bût étant d'avoir une grille d'écriture pour ton code.
    De même le découpage en fonction est très fréquent pour une raison simple, cela réduit la complexité de chaque élément. Le plus fréquent, on crée une fonction pour ce qu'on veux faire. monEcole.ajoutOccurenceNiveau("CP"); et ajouteEcoleNiveau(mapEcoles, nextLine2[3], nextLine2[4]); sont des exemples typique.s On ne sait pas comment on va faire l'implémentation, mais on sait que c'est possible. (A la fonction de se démerder pour que ça marche.) Si il y a une partie d'une fonction que tu ne sais pas faire, mais que tu identifié les entrées et les sorties de cette partie, tu fait une fonction qui le fera pour toi. Cela découpe le gros problème en plein de petite problème.

    Ton apprentissage est certes lent, mais il te manque énormément de base théorique. Tu devrais lire des cours et tutoriels Java (les faire), mais aussi apprend la théorie que se trouve dernière le langage.
    Il y a d’ailleurs un très bon guide ici :
    http://baptiste-wicht.developpez.com.../java/debuter/
    Et le tutoriel que tout le monde recommande est celui-ci (de mémoire) :
    http://java.developpez.com/livres-co...s/javaenfants/

    La partie théorique est plus vue ici :
    http://jmdoudoux.developpez.com/cours/developpons/java/
    Pour moi, un personne qui veux développer en Java doit comprendre les 5 premiers chapitres. Les autres sont plus optionnels.

    Cordialement,
    Patrick Kolodziejczyk.

    Ps : Oui, pour un professionnel ton application se fait en 1 heure maximum. Mais le bût, pour moi, ce n'est pas que ton programme soit "finit", c'est que tu ai compris les base de la programmation qui sont lié à ce programme. Histoire que tu soit capable de faire le suivant seul et plus rapidement.
    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.

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

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

    Informations forums :
    Inscription : Janvier 2015
    Messages : 49
    Par défaut
    Bonjour.

    Et bien durant ma formation, je n'ai appris qu'un langage, le python, et je ne peux pas dire que l'apprentissage de ce langage etait vraiment poussé .. De quoi codé un snake ou un 2048.
    Et puis il y a peut etre le fait que je suis une bille en math ^^
    Merci pour la doc, j'irai la lire plus tard.

    En ce qui concerne mon programme, je viens de finir les 8 premieres etapes, je fais la 9e et j'aurais finis ! :)

    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
    public class test {
     
    	public static void ajouteEcoleNiveau(Map<String,Ecole> eMap,String autreEcole,String niveau){
    		if(eMap.get(autreEcole)== null){
     
    			System.out.println("l'ecole n'est pas dans la map");
    			Ecole newEcole = new Ecole(autreEcole);
    			eMap.put(autreEcole,newEcole);
    			newEcole.ajoutOccurenceNiveau(niveau);
    			System.out.println(newEcole.getCodeEcole());
    		}
    		else{System.out.println("l'ecole est dans la map");
    		eMap.get(autreEcole).ajoutOccurenceNiveau(niveau);
    				}
    			}
    	public static void afficheStatistiqueListe(Map<String,Ecole> eMap){
    		Set<String> cles = eMap.keySet();
    		Iterator<String> it = cles.iterator();
    		while (it.hasNext()){                         //parcour la hashMap
    		   Object cle = it.next(); 				//recupere la clé
    		   Object valeur = eMap.get(cle); 		//recupere la valeur
     
    		  System.out.println((String)cle);    //affiche la clé(CodeEcole)
    		  ((Ecole) valeur).getStatistique();	//affiche les niveaux de l'ecole
    		}
     
    	}
     
     
    	public static void main(String[] args) {
     
     
    			Ecole monEcole = null;
    			monEcole = new Ecole("005432L");			//1. Tu crée une école en dur
    			System.out.println(monEcole.getCodeEcole()); //2. Tu affiches son nom en console.
    			monEcole.ajoutOccurenceNiveau("CP");  //3. Tu ajoute ajout une occurrence à une note pour un niveau.
    			monEcole.getStatistique();		//4. Tu affiche ne nombre d’occurrence pour tout les niveau pour l'école.
    			System.out.println("-------");
    			Map<String, Ecole> mapEcoles = new HashMap<String, Ecole>();	//5. Tu crée une Map avec pour clé le nom de l'école et en valeur l'objet.
    			mapEcoles.put(monEcole.getCodeEcole(),monEcole);		//6. Tu ajout l'école précédent à la liste.
    			ajouteEcoleNiveau(mapEcoles, "UneAutreEcole", "TPS");	//7. Tu crée une fonction qui ajoute une statique à une école. Via la fonction suivante :
    			System.out.println("-------");
    			ajouteEcoleNiveau(mapEcoles, "encoreUneAutreEcole", "CM2");
    			ajouteEcoleNiveau(mapEcoles, "encoreUneAutreEcole", "CM1");
    			System.out.println("-------");
    			afficheStatistiqueListe(mapEcoles);		//8. Faire une fonction qui affiche pour toutes les écoles de la liste toutes les notes.
     
    		}
    	}
    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
    import java.util.ArrayList;
     
     
    public class Ecole {
     
    	  protected String codeEcole;
     
    	  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){
    		 	System.out.println("\n Création d'une ecole avec parametre !"); 
    			codeEcole = eCode;
    		}
     
    		public void ajoutOccurenceNiveau(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:
    	        }
    		  }
     
    //---------------------Accesseurs---------------------------	     
     
     
    	  public String getCodeEcole()     //Retourne le code de l'ecole
    	  {
    		   return codeEcole; 
    	  }
     
    	  public void getStatistique(){    //retourne les nb d'occurence des niveaux
     
    		  ArrayList<String> listeNiveau = new ArrayList<String>();
    		  listeNiveau.add("TPS");
    		  listeNiveau.add("PS");
    		  listeNiveau.add("MS");
    		  listeNiveau.add("GS");
    		  listeNiveau.add("CP");
    		  listeNiveau.add("CE1");
    		  listeNiveau.add("CE2");
    		  listeNiveau.add("CM1");
    		  listeNiveau.add("CM2");
    		  listeNiveau.add("TOTAL");
     
    		  for(int i= 0; i<statistique.length;i++){
     
    				 System.out.print(listeNiveau.get(i)+" : "+statistique[i]+" ");
    			 }
    			System.out.println();
    		}
    }

  6. #26
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    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 209
    Billets dans le blog
    52
    Par défaut
    Petites corrections par rapport au facilité du langage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public static void afficheStatistiqueListe(Map<String,Ecole> eMap){
    		Set<String> cles = eMap.keySet();
    		Iterator<String> it = cles.iterator();
    		while (it.hasNext()){                         //parcour la hashMap
    		   Object cle = it.next(); 				//recupere la clé
    		   Object valeur = eMap.get(cle); 		//recupere la valeur
     
    		  System.out.println((String)cle);    //affiche la clé(CodeEcole)
    		  ((Ecole) valeur).getStatistique();	//affiche les niveaux de l'ecole
    		}
     
    	}
    Peut-être codé de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	public static void afficheStatistiqueListe(Map<String,Ecole> eMap){
    		for(Ecole ecole : eMap.entrySet()){
    			System.out.println(ecole.getNom());    //affiche la clé(CodeEcole)
    			ecole.getStatistique();	//affiche les niveaux de l'ecole
    		}
    	}
    Et :
    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
    	  public void getStatistique(){    //retourne les nb d'occurence des niveaux
     
    		  ArrayList<String> listeNiveau = new ArrayList<String>();
    		  listeNiveau.add("TPS");
    		  listeNiveau.add("PS");
    		  listeNiveau.add("MS");
    		  listeNiveau.add("GS");
    		  listeNiveau.add("CP");
    		  listeNiveau.add("CE1");
    		  listeNiveau.add("CE2");
    		  listeNiveau.add("CM1");
    		  listeNiveau.add("CM2");
    		  listeNiveau.add("TOTAL");
     
    		  for(int i= 0; i<statistique.length;i++){
     
    				 System.out.print(listeNiveau.get(i)+" : "+statistique[i]+" ");
    			 }
    			System.out.println();
    		}
    }
    Pourrait-être fait d'une autre manière, mais je voudrai surtout te présenter le StringBuilder et la concaténation :
    Ce que tu fait là listeNiveau.get(i)+" : "+statistique[i]+" " c'est de la concaténation. lorsque cela est réalise plien de fois, cela consomme beaucoup de mémoire. Car tu crée les objet String correspondant à tout les intermédiaires.

    Tu peux donc faire :
    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
    public String getStatistique(){    //retourne les nb d'occurence des niveaux
     
    		  ArrayList<String> listeNiveau = new ArrayList<String>();
    		  listeNiveau.add("TPS");
    		  listeNiveau.add("PS");
    		  listeNiveau.add("MS");
    		  listeNiveau.add("GS");
    		  listeNiveau.add("CP");
    		  listeNiveau.add("CE1");
    		  listeNiveau.add("CE2");
    		  listeNiveau.add("CM1");
    		  listeNiveau.add("CM2");
    		  listeNiveau.add("TOTAL");
     		  StringBuilder sb = new StringBuilder();
    		  for(int i= 0; i<statistique.length;i++){
    			 	sb.append(listeNiveau.get(i));
    			 	sb.append(" : ");
    			 	sb.append(statistique[i]);
    			 	sb.append(" ");
    			 }
    			return sbToString();
    		}
    }
    Ce qui te permet au lieu d'avoir un affichage directement en console, de récupérer les statistiques sont forme d'un string formaté que tu peux soit afficher soit enregistrer dans un fichier. (Ou encore autre chose.)

    Il serai possible de revoir la méthode utiliser pour la gestion de la liste des niveaux. Mais ce que tu fait est relativement correcte.

    Cependant, on peut mettre cette liste en static ce qui évitera de la recréer à chaque fois :

    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
     private static List<String> listeNiveau = null;
     
    public static getListeNiveau(){
    	if(listeNiveau == null){
    		  listeNiveau = new ArrayList<String>();
    		  listeNiveau.add("TPS");
    		  listeNiveau.add("PS");
    		  listeNiveau.add("MS");
    		  listeNiveau.add("GS");
    		  listeNiveau.add("CP");
    		  listeNiveau.add("CE1");
    		  listeNiveau.add("CE2");
    		  listeNiveau.add("CM1");
    		  listeNiveau.add("CM2");
    		  listeNiveau.add("TOTAL");
    	}
    	return listeNiveau;
    }
    public String getStatistique(){    //retourne les nb d'occurence des niveaux
    	StringBuilder sb = new StringBuilder();
    	for(int i= 0; i<getListeNiveau().length;i++){
    	 	sb.append(getListeNiveau().get(i));
    		sb.append(" : ");
    		sb.append(statistique[i]);
    		sb.append(" ");
    	}
    	return sbToString();
    }
    Cordialement,
    Patrick Kolodziejcyzk.
    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. #27
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Ardennes (Champagne Ardenne)

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

    Informations forums :
    Inscription : Janvier 2015
    Messages : 49
    Par défaut
    C'est parfait ! Merci pour les améliorations
    Je n'ai pas changer cette partie de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public static void afficheStatistiqueListe(Map<String,Ecole> eMap){
    		Set<String> cles = eMap.keySet();
    		Iterator<String> it = cles.iterator();
    		while (it.hasNext()){                         //parcour la hashMap
    		   Object cle = it.next(); 				//recupere la clé
    		   Object valeur = eMap.get(cle); 		//recupere la valeur
     
    		  System.out.println((String)cle);    //affiche la clé(CodeEcole)
    		  ((Ecole) valeur).getStatistique();	//affiche les niveaux de l'ecole
    		}
     
    	}
    Car Eclipse me soulignait en rouge, et a proposé ces modifications : ( ca créait d'autres probleme ailleurs)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    //for(Entry<String, Ecole> ecole : eMap.entrySet()){
    			//System.out.println(((Ecole) ecole).getCodeEcole());    //affiche la clé(CodeEcole)
    			//((Ecole) ecole).getStatistique();	//affiche les niveaux de l'ecole

    En tout cas je te remercie infiniment ! j'ai enfin finit mon logiciel et il marche a merveille il essayerait de courrir si il pouvait.

    Je mets mon code pour les futurs visiteurs :

    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
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.BufferedWriter;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    import java.util.Set;
    import javax.swing.AbstractButton;
    import javax.swing.JButton;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JTextField;
    import javax.swing.UIManager;
    import com.opencsv.CSVReader;
     
    public class Main extends JFrame{
     
    	private JTextField chemin_fichierCSV;
    	private JButton btnParcourirCSV;
    	private JButton btnGoCSV;
    	private JFileChooser fc_parcourirCSV;
    	private String fichier;
    	private BufferedWriter bw;
    	private static BufferedWriter bw2;
    	private JFileChooser fc_saveCSV;
    	private String cheminCSV;
    	private JTextField textField;
    	private String Annee;
    	private int toInt;
    	private CSVReader reader,reader2;
    	private List<Ecole> listeCodeEcole;
    	private Ecole monEcole;
     
    	public Main (){
     
    		fc_parcourirCSV = new JFileChooser();
    		fc_saveCSV = new JFileChooser();
     
    		//------------Parametre de la fenetre ------------
     
    	    this.setTitle("Extraction Eleves -> .dbf");                  		//le titre
    	    this.setSize(580, 140);									//les dimensions
    	    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);	//ferme quand on appuie sur la croix
    	    this.setLocationRelativeTo(null);						//place au milieu de l'ecran
    	    this.getContentPane().setLayout(null);					
     
    	    //------------Label "fichier .CSV :" ------------
     
    	    JLabel lblFichierCSV = new JLabel("Fichier .CSV : ",JLabel.CENTER);
    		lblFichierCSV.setBounds(18, 11, 129, 14);				//Positionnement et dimensions
    		getContentPane().add(lblFichierCSV);
     
    		//------------Chemin du fichier CSV ------------
     
    	    chemin_fichierCSV = new JTextField();
    		chemin_fichierCSV.setEditable(false);        //desactive
    		chemin_fichierCSV.setBounds(145, 8, 260, 20);
    		getContentPane().add(chemin_fichierCSV);
    		chemin_fichierCSV.setColumns(10);
     
    		//------------Bouton parcourir CSV ------------
     
    	    btnParcourirCSV = new JButton("Parcourir...");
    	    //btnParcourirCSV.setEnabled(false);
    	    btnParcourirCSV.setBounds(425, 8, 116, 20);
    		btnParcourirCSV.setHorizontalTextPosition(AbstractButton.LEADING);
    		//btnParcourirCSV.setIcon(icon);          		
    		this.getContentPane().add(btnParcourirCSV);
     
    		//------------Bouton Enregistrer CSV------------
     
    		btnGoCSV = new JButton("Enregistrer");
    		btnGoCSV.setBounds(425, 55, 116, 20);
    		btnGoCSV.setEnabled(false);			//desactive
    		this.getContentPane().add(btnGoCSV);
     
    		//------------Label Année------------
     
    		JLabel lblAnne = new JLabel("Ann\u00E9e : ");
    		lblAnne.setBounds(75, 38, 46, 14);
    		getContentPane().add(lblAnne);
     
    		//------------Formulaire Année------------
     
    		textField = new JTextField();
    		textField.setText("20**");
    		textField.setEditable(false);
    		textField.setBounds(144, 35, 59, 20);
    		getContentPane().add(textField);
    		textField.setColumns(10);
     
    		//------------Quand on clic sur le bouton parcourir------------
     
    				btnParcourirCSV.addActionListener(new ActionListener() {
    					public void actionPerformed(ActionEvent ae) {
    						fc_parcourirCSV.showOpenDialog(null);				//ouvre une fenetre
    						if (fc_parcourirCSV.getSelectedFile() != null) {
    							fichier = fc_parcourirCSV.getSelectedFile().toString();	//On prend le chemin
    							chemin_fichierCSV.setText(fichier);						//On l'affiche dans le formulaire désactivé
    							textField.setEditable(true);
    							btnGoCSV.setEnabled(true);							//active le bouton Enregistrer
    						}
    					}
    				});
     
    		//------------Quand on clic sur le bouton Enregistrer------------
     
    				btnGoCSV.addActionListener(new ActionListener() {
    					public void actionPerformed(ActionEvent ae) {
    						fc_saveCSV.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);		//permet de ne sélectionner que les répertoires
    						fc_saveCSV.showSaveDialog(null);							//ouvre une boite de dialogue
    						cheminCSV = fc_saveCSV.getSelectedFile() + "\\";			//recupere le chemin + \
    						try {
    							CaptureColonne();
    						} catch (IOException e) {
    							e.printStackTrace();
    						}
    					}
    				});
    			this.setVisible(true);			//On rend visible l'interface graphique			
    	}
     
     
    	/*--------------------------------FONCTION QUI AJOUTE ECOLE/NIVEAU--------------------------------*/
     
     
    	public static void ajouteEcoleNiveau(Map<String,Ecole> eMap,String autreEcole,String niveau){
    		if(eMap.get(autreEcole)== null){
    			//System.out.println("l'ecole n'est pas dans la map");
    			Ecole newEcole = new Ecole(autreEcole);
    			newEcole.ajoutOccurenceNiveau(niveau);
    			eMap.put(autreEcole,newEcole);			
    		}
    		else{			
    			//System.out.println("l'ecole est dans la map");
    			eMap.get(autreEcole).ajoutOccurenceNiveau(niveau);
    		}
    	}
     
     
    	/*--------------------------------FONCTION QUI AFFICHE LES STATS--------------------------------*/
     
     
    	public static void afficheStatistiqueListe(Map<String,Ecole> eMap){
    		Set<String> cles = eMap.keySet();
    		Iterator<String> it = cles.iterator();
    		while (it.hasNext()){                         //parcour la hashMap
    		   Object cle = it.next(); 				//recupere la clé
    		   Object valeur = eMap.get(cle); 		//recupere la valeur
    		   try {
    			bw2.write((String)cle+";");
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		   //System.out.println((String)cle);    //affiche la clé(CodeEcole)
    		   try {
    			bw2.write(((Ecole) valeur).getStatistique());
    		} catch (IOException e) {
    			e.printStackTrace();
    		}	//affiche les niveaux de l'ecole
    		}
    	}
     
     
    	/*-------------------------------- PROGRAMME--------------------------------*/
     
    				//----------Partie Traitement Doublon------------
     
    	public  void CaptureColonne() throws IOException {
     
    		reader = new CSVReader(new FileReader(fichier), ';','$',1); //ouvre le flux de lecture
     
    		String [] nextLine;  //tableau qui va contenir les colonnes d'une ligne
     
    		Annee = textField.getText();	//recupere l'année
    		toInt = Integer.parseInt(Annee);  //transforme String en Int
     
    		List<Enregistrement> listeAvecDoublon = new ArrayList<Enregistrement>();
     
    		bw = new BufferedWriter(new FileWriter(cheminCSV+"Eleves_"+Annee+".dbf", false));  //flux d'ecriture
    		bw2 = new BufferedWriter(new FileWriter(cheminCSV+"Eleves_Stats_"+Annee+".dbf", true));
    		bw.write("Nom;Prenom;Niveau;CodeEcole;NomEcole;\n");
    		bw2.write("CodeEcole;TPS;PS;MS;GS;CP;CE1;CE2;CM1;CM2;TOTAL;\n");
     
    		while ((nextLine = reader.readNext()) != null){	              
    			Enregistrement Eleve = new Enregistrement(nextLine[0],nextLine[1],nextLine[2],nextLine[5],nextLine[6]);
    			// System.out.println(compt+"Eleve créé !");
    			listeAvecDoublon.add(Eleve);
    		}
     
    		int comptDoublon = 0;
     
    		Map<String,Map<String,List<Enregistrement>>> listeStructure = new HashMap<String,Map<String,List<Enregistrement>>>();
     
    		for(Enregistrement ligne : listeAvecDoublon){
    			// On prend le dossier de la famille
    			if(listeStructure.get(ligne.getNom())== null){
    				Map<String,List<Enregistrement>> prenomStructure = new  HashMap<String,List<Enregistrement>>();
    				List<Enregistrement> listeDoublon = new ArrayList<Enregistrement>();
    				listeDoublon.add(ligne);
    				prenomStructure .put(ligne.getPrenom() ,listeDoublon);
    				listeStructure.put(ligne.getNom(),prenomStructure );
    				bw.write(ligne.getNom()+";"+ligne.getPrenom()+";"+ligne.getNiveau()+";"+ligne.getCodeEcole()+";"+ligne.getNomEcole()+";\n");
    			}		
    			else {
    				Map<String,List<Enregistrement>> prenomStructure = listeStructure .get(ligne.getNom());
    				// On prend le dossier du prénom dans la famille.
    				if(prenomStructure.get(ligne.getPrenom()) == null){
    					List<Enregistrement> listeDoublon = new ArrayList<Enregistrement>();
    					listeDoublon.add(ligne);
    					prenomStructure .put(ligne.getPrenom() ,listeDoublon);
    					bw.write(ligne.getNom()+";"+ligne.getPrenom()+";"+ligne.getNiveau()+";"+ligne.getCodeEcole()+";"+ligne.getNomEcole()+";\n");
    				} 
    				else {
    					prenomStructure.get(ligne.getPrenom()).add(ligne);
    					comptDoublon++;
    					//System.out.println(ligne.getNom()+" "+ligne.getPrenom()+" est en doublon");
    				}
    			}
    		}
    		JOptionPane.showMessageDialog(null, +comptDoublon+" doublon(s) supprimé(s)","Doublon(s) supprimé(s)", JOptionPane.INFORMATION_MESSAGE);
     
    					//----------------Partie Statistique----------------
     
    		bw.close();	 
    		reader.close();
     
    		reader2 = new CSVReader(new FileReader(cheminCSV+"Eleves_"+Annee+".dbf"),';','$',1);
    		 String [] nextLine2;
     
    		 HashMap<String, Ecole> mapEcoles = new HashMap<String, Ecole>(); //liste d'ecole
     
     
    		 while ((nextLine2 = reader2.readNext()) != null){	    //on ajoute la ligne dans un tableau<Ecole>
    			monEcole = new Ecole(nextLine2[3]);
    			ajouteEcoleNiveau(mapEcoles, nextLine2[3], nextLine2[2]); //ajoute les ecoles dans la map, et ajoute les niveaux
    		 }
     
    		 afficheStatistiqueListe(mapEcoles);	//ecrit dans le fichier statistique
    		 reader2.close();
    		 bw2.close();
    		 JOptionPane.showMessageDialog(null, "Génération terminée ! ","Terminé !", JOptionPane.INFORMATION_MESSAGE);
    }
     
     
     
    	public static void main(String[] args) {
     
    		try {											//Dès qu'il est lancé...
    			UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
    		new Main();								//...On lance Main()
    		}
    		catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
     
    }
    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
     
    public class Enregistrement {
    		String Nom;
    		String Prenom;
    		String Niveau;
    		String CodeEcole;
    		String NomEcole;
     
    		public Enregistrement(String NomE, String PrenomE, String NiveauE, String CodeEcoleE, String NomEcoleE) {
     
    			Nom = NomE;
    			Prenom = PrenomE;
    			Niveau = NiveauE;
    			CodeEcole = CodeEcoleE;
    			NomEcole = NomEcoleE;
    		}
     
    		public String getNom() {
    		    return Nom;
    		  } 
     
    		public String getPrenom() {
    		    return Prenom;
    		  } 
    		public String getNiveau() {
    		    return Niveau;
    		  } 
    		public String getCodeEcole() {
    		    return CodeEcole;
    		  } 
    		public String getNomEcole() {
    		    return NomEcole;
    		  } 
     
    }
    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
     
    import java.util.ArrayList;
     
     
    public class Ecole {
     
    	  protected String codeEcole;
     
    	  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){
    		 	//System.out.println("\n Création d'une ecole avec parametre !"); 
    			codeEcole = eCode;
    		}
     
    		public void ajoutOccurenceNiveau(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:
    	        }
    		  }
     
    //---------------------Accesseurs---------------------------	     
     
     
    	  public String getCodeEcole()     //Retourne le code de l'ecole
    	  {
    		   return codeEcole; 
    	  }
     
    	  public String getStatistique(){    //retourne les nb d'occurence des niveaux
     
    		  ArrayList<String> listeNiveau = new ArrayList<String>();
    		  listeNiveau.add("TPS");
    		  listeNiveau.add("PS");
    		  listeNiveau.add("MS");
    		  listeNiveau.add("GS");
    		  listeNiveau.add("CP");
    		  listeNiveau.add("CE1");
    		  listeNiveau.add("CE2");
    		  listeNiveau.add("CM1");
    		  listeNiveau.add("CM2");
    		  listeNiveau.add("TOTAL");
     
    		  StringBuilder sb = new StringBuilder();
    		  for(int i= 0; i<statistique.length;i++){
    			 	sb.append(statistique[i]);
    			 	sb.append(";");
    			 }
    		  sb.append("\n");
    			return sb.toString();
    		}
    }


    Pour la suite de mon stage je vais devoir faire un site internet, donc je stop java pour le moment.
    A plaisir de vous revoir, et encore MERCI

    Cordialement,
    P4atch

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

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

    Informations forums :
    Inscription : Janvier 2015
    Messages : 49
    Par défaut
    Bonjour, je réutilise ce sujet car j'ai fait quelque modif au programme et j'ai un NullPointerException qui est généré.

    Voici ce que fait mon logiciel avec les modifications apportés :
    Je dois maintenant extraire le nomEcole qui correspondant au codeEcole d'un fichier(Codes_ecoles.csv) afin d'écrire ce nomEcole dans le fichier Statistique généré.

    Je creer maintenant toutes les ecoles en lisant le fichier Code_ecoles.csv
    J'ai donc ajouté un parametre à Ecole(), qui est le nom de l'ecole
    J'ajoute ces ecoles dans une map
    Je lis le fichier qui contient tous les eleves afin d'en extraire le niveau des eleves.
    J'incremente le niveau à chaque ligne lu
    J'ecris dans le fichier Statistique le codeEcole, nomEcole, et les Statistiques

    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
    /*--------------------------------FONCTION QUI AJOUTE ECOLE/NIVEAU--------------------------------*/
     
     
    	public static void ajouteNiveau(Map<String,Ecole> eMap,String autreEcole,String niveau){
    		/*if(eMap.get(autreEcole)== null){
    			//System.out.println("l'ecole n'est pas dans la map");
    			Ecole newEcole = new Ecole(autreEcole, nomEcole);
    			newEcole.ajoutOccurenceNiveau(niveau);
    			eMap.put(autreEcole,newEcole);			
    		}
    		else{			
    			//System.out.println("l'ecole est dans la map");*/
    			eMap.get(autreEcole).ajoutOccurenceNiveau(niveau);
    		//}
    	}
    Je n'ai plus besoin de vérifier si l'ecole est dans la map ou non, puisque je creer toutes les ecoles lors de la lecture de Codes.ecoles.csv.
    Cette fonction ne sert plus qu'a incrementer le niveau

    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
    /*--------------------------------FONCTION QUI AFFICHE LES STATS--------------------------------*/
     
     
    	public static void afficheStatistiqueListe(Map<String,Ecole> eMap){
    		Set<String> cles = eMap.keySet();
    		Iterator<String> it = cles.iterator();
    		while (it.hasNext()){                         //parcour la hashMap
    		   Object cle = it.next(); 				//recupere la clé
    		  String nomEcole = ((Ecole) cle).getNomEcoles(); //recupere le nom de l'ecole    ---- j'ai des doutes sur cette ligne
    		   Object valeur = eMap.get(cle); 		//recupere la valeur
    		   try {
    			bw2.write((String)cle+";"+nomEcole+";");  //ecrit dans le fichier le code de l'ecole et le nom de l'ecole
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		try {
    			bw2.write(((Ecole) valeur).getStatistique(toInt));  //ecrit dans le fichier les stats de l'ecole
    		} catch (IOException e) {
    			e.printStackTrace();
    		}	
    		}
    	}
    Code principal :
    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
    //----------------Partie Statistique----------------
     
     
    		reader2 = new CSVReader(new FileReader(cheminCSV+"Eleves_"+secteur+"_"+Annee+"_"+annee2+".dbf"),';','$',1); //2e flux de lecture
    		readerEcoles = new CSVReader(new FileReader("Codes_ecoles.csv"),';','$',1); //3e flux de lecture -> recupere les noms et code ecoles
     
    		 String [] nextLine2; //stock la ligne lu
    		 String [] nextLineEcoles; //stock la ligne lu
    		 HashMap<String, Ecole> mapEcoles = new HashMap<String, Ecole>(); //liste d'ecole
     
    		 //   1. J'ajoute toutes les ecoles a la map
     
    		 while ((nextLineEcoles = readerEcoles.readNext()) != null){
    			Ecole newEcole = new Ecole(nextLineEcoles[0],nextLineEcoles[1]);
    			 mapEcoles.put(nextLineEcoles[0], newEcole);
    		 }
    		 readerEcoles.close();
     
    		 //   2. J'ajoute les niveaux aux ecoles dans la map
     
    		 while ((nextLine2 = reader2.readNext()) != null){	    //on ajoute la ligne dans un tableau
    			 if (nextLine2[3].equals("") )			//si il n'y a pas le codeEcole
    			 {}									//on fait rien
    			 else
    			 {
    				ajouteNiveau(mapEcoles, nextLine2[3], nextLine2[2]); //incremente les  niveaux des ecoles dans la map
    			 }
    		 }
     
    		 //	  3. J'ecris dans le fichier Statistique
     
    		 afficheStatistiqueListe(mapEcoles);	//ecrit dans le fichier statistique
    		 reader2.close();
    		 bw2.close();
    		 JOptionPane.showMessageDialog(null, "Génération terminée ! ","Terminé !", JOptionPane.INFORMATION_MESSAGE);
    }
    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
    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("\n Création d'une ecole avec parametre !"); 
    			codeEcole = eCode;
    			nomEcole = eNom;
    		}
     
    		public void ajoutOccurenceNiveau(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:
    	        }
    		  }
     
    //---------------------Accesseurs---------------------------	     
     
     
    	  public String getCodeEcole()     //Retourne le code de l'ecole
    	  {
    		   return codeEcole; 
    	  }
    	  public String getNomEcoles()     //Retourne le code de l'ecole
    	  {
    		   return nomEcole; 
    	  }
     
    	  public String getStatistique(int toInt){    //retourne les nb d'occurence des niveaux
     
    		  int annee = toInt;
    		  int annee2 = annee + 1;
     
    		  ArrayList<String> listeNiveau = new ArrayList<String>();
    		  listeNiveau.add("TPS");
    		  listeNiveau.add("PS");
    		  listeNiveau.add("MS");
    		  listeNiveau.add("GS");
    		  listeNiveau.add("CP");
    		  listeNiveau.add("CE1");
    		  listeNiveau.add("CE2");
    		  listeNiveau.add("CM1");
    		  listeNiveau.add("CM2");
    		  listeNiveau.add("TOTAL");
     
    		  StringBuilder sb = new StringBuilder();
    		  for(int i= 0; i<statistique.length;i++){
    			 	sb.append(statistique[i]);
    			 	sb.append(";");
    			 }
    		  sb.append(annee+"/"+annee2+"\n");
    			return sb.toString();
    		}
    }

    Mon probleme : j'ai un NullPointerException a cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    eMap.get(autreEcole).ajoutOccurenceNiveau(niveau);{
    Est-ce que ca veut dire que autreEcole n'est pas dans ma map ?

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

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

    Informations forums :
    Inscription : Janvier 2015
    Messages : 49
    Par défaut
    EDIT : Je viens de trouver mon probleme : le fichier qu'on m'as fournit "Codes_ecoles.csv" ne contient pas toutes les ecoles de la région ... je suppose que c'est pour ca que j'ai un NullPointerException
    Bon, si je rencontre d'autre probleme, je vous recontacterai, sinon dsl pour le dérangement

  10. #30
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Ardennes (Champagne Ardenne)

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

    Informations forums :
    Inscription : Janvier 2015
    Messages : 49
    Par défaut
    Il me semblait bien que j'allais avoir des soucis pour récupérer le nom de l'ecole :

    Voici comment je pensais le récupérer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public static void afficheStatistiqueListe(Map<String,Ecole> eMap){
    		Set<String> cles = eMap.keySet();
    		Iterator<String> it = cles.iterator();
    		while (it.hasNext()){                         //parcour la hashMap
    		   Object cle = it.next(); 				//recupere la clé
    		  String nomEcole = ((Ecole) cle).getNomEcoles(); //recupere le nom
    		   Object valeur = eMap.get(cle); 		//recupere la valeur
    		   try {
    			bw2.write((String)cle+";"+nomEcole+";");  //ecrit dans le fichier le code de l'ecole  ET le nom          
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    Mais j'ai ce message d'erreur qui concerne la ligne 6 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to Ecole
    	at Main.afficheStatistiqueListe(Main.java:197)


    EDIT : Probleme résolu ^^'

  11. #31
    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 : 56
    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
    Billets dans le blog
    2
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Iterator<String> it = cles.iterator();
    while (it.hasNext()){                         //parcour la hashMap
      Object cle = it.next(); 				//recupere la clé
      String nomEcole = ((Ecole) cle).getNomEcoles(); //recupere le nom
      Object valeur = eMap.get(cle); 		//recu
    1. création d'un itérateur de String appelé it
    2. boucle tant qu'il y a des String dans l'itérateur
    3. prise du premier String et mis dans une variable cle de type Object (mais l'instance est toujours du String)
    4. cast en Ecole de cle, donc du String : String et Ecole étant icompatible (String n'étend pas Ecole) : exception


    Pourquoi tout passer en Objet, alors que justement le fait de paramétrer la map sert à pouvoir manipuler clef et valeur dans le bon type sans avoir à caster ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Iterator<String> it = cles.iterator();
    while (it.hasNext()){                  
      String cle = it.next(); 		
    Ecole valeur = eMap.get(cle); 		 
      String nomEcole = ecole.getNomEcoles();
    Tout simplement.

    Remarque que puisque le but est d'itérer sur les clefs et les valeurs, autant itérer sur l'entrySet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Iterator<Map.Entry<String, Ecoloe>> it = eMap.entrySet().iterator();
    while (it.hasNext()){       
      Map.Entry<String, Ecoloe> entry = it.next();           
      String cle = entry.getKey(); 		
    Ecole ecole= entry.getValeur(); 		 
      String nomEcole = ecole.getNomEcoles();
    Ce qui pourrati s'écrire encore plus simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for (Map.Entry<String, Ecole> entry : eMap.entrySet()){        
      String cle = entry.getKey(); 		
    Ecole ecole= entry.getValeur(); 		 
      String nomEcole = ecole.getNomEcoles();
    Et si la clef ne servait qu'à récupérer la valeur, tu pourrait aussi itérer sur les valeurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for (Ecole ecole : eMap.values()){        
      String nomEcole = ecole.getNomEcoles();
    (voir aussi les streams par ailleurs)
    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.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

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, 12h34
  2. Statistiques sur des Etats
    Par Gerard lambert dans le forum IHM
    Réponses: 7
    Dernier message: 27/07/2006, 09h06
  3. Statistiques sur des tables
    Par nuke_y dans le forum Oracle
    Réponses: 2
    Dernier message: 24/04/2006, 15h02
  4. Réponses: 4
    Dernier message: 19/02/2006, 19h18
  5. Question simple sur la libération des objets
    Par gibet_b dans le forum Langage
    Réponses: 2
    Dernier message: 12/07/2004, 11h01

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