Partage
  • Partager sur Facebook
  • Partager sur Twitter

GestionCursusFichier

Exception in thread "main" java.lang.NullPointerException

    17 août 2017 à 15:47:42

    Bonjour

    J'ai travaille sur un exercice depuis hier soir et j'ai quelques soucis:

    l'exercice consiste de développer une application qui gère les notes des étudiants, elle est composée de 4 classes  dont une contient  la fonction la main.

    Mon probléme concerne que deux classe: la classe principale(GestionCursusFichier) et la classe(CursusFichier).

    voici le code de la classe main:

    import java.util.Scanner;
    import java.io.*;
    
    public class GestionCursusFichier {
    	public static void main(String[] args) throws IOException, ClassNotFoundException {
    		// TODO Auto-generated method stub
    		FichierObjet F=new FichierObjet(); 
    		CursusFichier C=new CursusFichier(); 
    		byte choix=0;
    		Scanner sc=new Scanner(System.in);
    		//lecture automatique dés l'ouverture 
    		if(F.ouvrir("l")){
    			C=F.lire();//initialisation de C à la liste d'etudiants qui sint deja dans le fichier. 
    			F.fermer();
    		}
    		do{
    			System.out.println("1.ajout d'un etudiant");
    System.out.println("2.afficher la liste des etudiant");
    			System.out.println("3.recherche d'un etudiant");
    			System.out.println("4.suppression d'un etudiant");
    			System.out.println("5.sortir");
    			choix=sc.nextByte(); 
    			switch(choix){
    			case 1: C.ajouteUnEtudiant();        
    			break;
    			case 2: C.afficheLesEtudiants();
    			break;
    			case 3: C.rechercheUnEtdudiant();
    			break;
    			case 4: C.supprimerUnEtudiant();
    			break;
    			case 5: 
    				System.out.println("Sauvegarde des données dans Cursus.dat");
    				F.ouvrir("Ecriture");
    				F.ecrire(C);
    				F.fermer();
    				System.exit(0);
    			break; 
    			default : System.out.print("Cette option n'existe pas");
    			}
    		}while(choix!=5); 
    		sc.close();
    	}//Fin de la classe main
    }//Fin de la GestionCursusDictionnaire
    

    Les erreurs sont les lignes que j'ai mis en rouge, ces lignes font appel à la classe(CursusFichier) dont le code est :

    import java.util.*;
    import java.io.*;
    
    public class CursusFichier implements Serializable {
    	
    		//les données
    		private HashMap<String, EtudiantFichier> listeClasse;//declaration d'un objet de type dictionnaire 
    		Scanner sc=new Scanner(System.in); 
    		
    		//les methodes
    		public CursusFichier(){ 
    			listeClasse=new HashMap<String, EtudiantFichier>();  
    		}
    		public void ajouteUnEtudiant(){
    			EtudiantFichier nouveau=new EtudiantFichier();
    			String cle=creerUneCle(nouveau);
    			if(listeClasse.get(cle)==null) listeClasse.put(cle, nouveau);
    			else System.out.println("cet etudiant a deja ete saisi"); 
    		}
    		public void rechercheUnEtdudiant(){
    			System.out.println("Prenom de l'etudiant recherché");
    			String p=sc.next();
    			System.out.println("Nom de l'etudiant recherché");
    			String n=sc.next();
    			String cle=creerUneCle(p,n);
    			EtudiantFichier eclasse=(EtudiantFichier) listeClasse.get(cle);
    			if(eclasse!=null) eclasse.AfficheUnEtudiant();
    			else System.out.println(p + " " + n + " est  inconnu! ");
    		}
    		public void supprimerUnEtudiant(){
    			System.out.println("Prenom de l'etudiant recherché");
    			String p=sc.next();
    			System.out.println("Nom de l'etudiant recherché");
    			String n=sc.next();
    			String cle=creerUneCle(p,n);
    			EtudiantFichier eclasse=(EtudiantFichier) listeClasse.get(cle);
    			if(eclasse!=null){
    				listeClasse.remove(cle); 
    				System.out.println(p + " " + n + " a ete  supprimé"); 
    			}
    			else System.out.println(p + " " + n + " est  inconnu! ");
    		}
    		public void afficheLesEtudiants(){
    			if(listeClasse.size()!=0){
    				Collection<EtudiantFichier> c=listeClasse.values();//l'outil facilite le parcours de listes 
    				for(EtudiantFichier e:c) e.AfficheUnEtudiant();
    			}
    			
    			else System.out.println("Il n'y pas d'etudiant dans cette liste"); 
    		}
    		//creation de cle-association:Dictionnaire 
    		private String creerUneCle(EtudiantFichier e){
    			String tmp;
    			tmp=e.getPrenom().charAt(0)+e.getNom();
    			return tmp.toUpperCase(); 
    		}
    		private String creerUneCle(String p, String n){
    			String tmp=p.charAt(0)+n;
    			return tmp.toUpperCase();
    		}
    		
    }

    et le type d'erreur que l’interpréteur  java m'affiche,par exemple si je choisisse l'option 1 est:

    Exception in thread "main" java.lang.NullPointerException
        at GestionCursusFichier.main(GestionCursusFichier.java:24)

    Merci d'avance:)

    • Partager sur Facebook
    • Partager sur Twitter
      18 août 2017 à 10:42:25

      Salut. Je pense que l'erreur se produit à la ligne 54 du deuxième fichier et trouve sa source à l ligne 24 du premier(comme le dit le compilo).

      Dans la méthode "ajouterEtudiant" tu crée une instance de EtudiantFichier mais tu n'as pas initialisé les attributs "nom" et "prenom" qui valent probablement null. Puis-je voir la classe "EtudiantFichier"?

      • Partager sur Facebook
      • Partager sur Twitter
        18 août 2017 à 17:26:44

        Désolé, le problème n’était pas lié à ces deux classes plutôt un autre et j'ai pu résoudre la faute.

        Merci #Kulturman

        • Partager sur Facebook
        • Partager sur Twitter

        GestionCursusFichier

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown