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

Langage Java Discussion :

Eventuel Problème De Setting


Sujet :

Langage Java

  1. #1
    Membre actif Avatar de Goupo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 505
    Points : 229
    Points
    229
    Par défaut Eventuel Problème De Setting
    Salut,

    Alors j'ai un erreur bizarre. Aparement, je ne peux pas setter l'attibut emprunte d'une classe Media. Je ne comprend pas pourquoi. Voilà mon code, si vous voyez quelque chose de suspect... !

    Merci d'avance.
    L'erreur:
    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
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    	at Database.chargeLesDonneesEmprunt(Database.java:427)
    	at MediaFrame.actionPerformed(MediaFrame.java:197)
    	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    	at javax.swing.AbstractButton.doClick(Unknown Source)
    	at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
    	at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
    	at java.awt.Component.processMouseEvent(Unknown Source)
    	at javax.swing.JComponent.processMouseEvent(Unknown Source)
    	at java.awt.Component.processEvent(Unknown Source)
    	at java.awt.Container.processEvent(Unknown Source)
    	at java.awt.Component.dispatchEventImpl(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Window.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.EventQueue.dispatchEvent(Unknown Source)
    	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.run(Unknown Source)
    Le set:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    //Mettre le Media en emprunte = true
    Media unMedia = this.getMedia(unNomMedia/*, "CD"*/);
    unMedia.setEmprunte(true); //<========== L'erreur est ICI
    La classe Media
    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
    public class Media {
    	protected String nom;
    	protected String auteur;
    	protected String producteur;
    	protected String genre;
    	protected int note;
    	protected String commentaire;
    	protected boolean emprunte;
     
    	/**
             * Constructeur de Media
             * @param nom
             * @param auteur
             * @param producteur
             * @param genre
             * @param note
             */
    	public Media(String nom, String auteur, String producteur, String genre, int note)
    	{
    		this.nom = nom;
    		this.auteur = auteur;
    		this.producteur = producteur;
    		this.genre = genre;
    		this.note = note;
    		this.commentaire = "";
    		this.emprunte = false;
    	}
     
    	public Media(String nom, String auteur, String producteur, String genre, int note, String commentaire, boolean emprunte)
    	{
    		this.nom = nom;
    		this.auteur = auteur;
    		this.producteur = producteur;
    		this.genre = genre;
    		this.note = note;
    		this.commentaire = commentaire;
    		this.emprunte = emprunte;
    	}
     
    	public void setEmprunte(boolean emprunte) {
    		this.emprunte = emprunte;
    	}
    Les CD sont des médias, il s'agit en l'occurence d'un CD
    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
    public class CD extends Media
    {
        private int nbDePistes;
        private String duree;
     
        /**
         * Créé un CD.
         */
        public CD(String leTitre, String leGroupe, String producteur, String genre, String laDuree, int nbPistes, int note)
        {
        	super(leTitre, leGroupe, producteur, genre, note);
            this.nbDePistes = nbPistes;
            this.duree = laDuree;
        }
     
        /**
         * Initialise le CD.
         */
        public CD(String leTitre, String leGroupe, String producteur, String genre, String laDuree, int nbPistes, int note, String commentaire, boolean emprunte)
        {
        	super(leTitre, leGroupe, producteur, genre, note, commentaire, emprunte);
            this.nbDePistes = nbPistes;
            this.duree = laDuree;
        }
    Les CD sont chargés à partir d'un fichier
    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
        public void chargeLesDonneesCD(String nomFichier)
        {
        	try
        	{
        		FileReader in = new FileReader(nomFichier);
                // passe par un buffer pour simplifier la lecture
                BufferedReader buffer = new BufferedReader(in);
     
                // lecture première ligne
                String unNom = buffer.readLine() ; //terme
     
                String unAuteur;
                String unProducteur;
                String unGenre;
                int uneNote;
                String unCommentaire;
                boolean emprunte;
                int unNbPistes;
                String uneDuree;
     
                //Tant qu'il y a des lignes à lire
                while (unNom != null)
                {  
             	   unAuteur = buffer.readLine();
             	   unProducteur = buffer.readLine();
             	   unGenre = buffer.readLine();
             	   String strNote = buffer.readLine();
             	   uneNote = Integer.parseInt(strNote);
             	   unCommentaire = buffer.readLine();
             	   String strNbPistes = buffer.readLine();
             	   unNbPistes = Integer.parseInt(strNbPistes);
             	   uneDuree = buffer.readLine();
             	   String strEmp = buffer.readLine();
            	   if (strEmp.equals("true"))
            	   {
            		   emprunte = true;
            		   }
            	   else if (strEmp.equals("false"))
            	   {
            		   emprunte = false;
            	   }
            	   else
            	   {
            		   emprunte = false;
            	   }
     
             	   System.out.println("Chargé : " + unNom + " " + unAuteur + " " + unProducteur + " " + unGenre + " " + uneNote + " " + unCommentaire + " " + strEmp + " " + unNbPistes + " " + uneDuree);
     
             	   CD unCD = new CD (unNom, unAuteur, unProducteur, unGenre, uneDuree, unNbPistes, uneNote, unCommentaire, emprunte);
             	   this.lesCD.add(unCD);
     
             	   //lire le prochain nom
             	   unNom = buffer.readLine();
                 }
                // fermeture fichier
                in.close();
        	}
        	catch(IOException e)
        	{
        		System.out.println("Erreur : Fichier CD - Problème de lecture fichier - Le fichier est inexistant;");
        	}
        }
    Voici mon fichier CD:
    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
    California
    Mr Bungle
    John Zorn
    Ambiance Psychédélique Trash
    17
    Déjanté
    10
    44:13
    false
    Aenima
    Tool
    X
    Rock Progressif
    18
    Pas plus étrange
    9
    68:35
    false
    Dernières Balises (Avant Mutation)
    Hubert Félix Thiéfaine
    Sterne
    Variété
    18
     
    10
    45:32
    false

  2. #2
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    Salut,

    Montre-nous plutôt la méthode Database.chargeLesDonneesEmprunt...

    @+

  3. #3
    Membre actif Avatar de Goupo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 505
    Points : 229
    Points
    229
    Par défaut
    Bon j'ai changé plusieurs choses, l'erreur a changé et est devenue Null Pointer exception toujours sur le unCD.setEmprunte(true) mais je pense l'avoir trouvé l'origine du problème : lors de l'avant dernier tour du while, unNomPers vaut null et le while fait encore un tour d'où le nullPointer sur setEmprunte. Pourtant le while dit bien tant que unNomPers != null on fait... Je vois pas.

    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
    public void chargeLesDonneesEmprunt(String nomFichier)
        {
        	try
        	{
        		FileReader in = new FileReader(nomFichier);
                // passe par un buffer pour simplifier la lecture
                BufferedReader buffer = new BufferedReader(in);
     
                // lecture première ligne            
                String unNomPers = buffer.readLine();
     
                String unNomCD;
     
                //Tant qu'il y a des lignes à lire
                while (unNomPers != null)
                {
                	unNomCD = buffer.readLine();
     
                	System.out.println("Chargé Emprunt : " + unNomPers + " " + unNomCD);
     
                	//Ajouter le média dans la liste de la personne
                	Emprunt unEmprunt = new Emprunt (unNomPers, unNomCD);
                	this.lesEmprunts.add(unEmprunt);
     
                	//Mettre le Media en emprunte = true
                	CD unCD = this.getUnCD(unNomCD);
                	//unCD.setEmprunte(true);
     
                	//lire le prochain nom
                	unNomPers = buffer.readLine();
                	System.out.println(unNomPers); //affiche null dans la console !!!!
                 }
                // fermeture fichier
                in.close();
        	}
        	catch(IOException e)
        	{
        		System.out.println("Erreur : Fichier Emprunt - Problème de lecture fichier - Le fichier est inexistant;");
        	}
        }
    Edit : Bon après un bidouillage hasardeux intensif, et sans savoir ce que j'ai changé pour que ça marche, ben ça marche finalement, donc ben, c'est cool.


    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec Set compliance level
    Par bassem-ca dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 19/02/2009, 21h17
  2. [E-03] Problème avec Set de worksheet
    Par drakkar_agfa dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 11/12/2008, 21h44
  3. [E-00] problème avec set
    Par anyah dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/11/2008, 14h07
  4. fatal error RC1015 , problème de setting
    Par totem dans le forum Visual C++
    Réponses: 1
    Dernier message: 26/07/2007, 18h02
  5. [MySQL] problème mysql_query('SET NAMES 'UTF8'')
    Par saidkh dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 02/03/2007, 21h48

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