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 :

Problème avec Exception in thread "main" java.lang.NullPointerException


Sujet :

avec Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 102
    Points : 65
    Points
    65
    Par défaut Problème avec Exception in thread "main" java.lang.NullPointerException
    Bonjour je débute en java et je bloque sur un truc :

    J'ai une classe LEPERNOEL qui instancie un objet d'une classe PereNoel
    et d'une autre classe Enfant .
    l'une des méthode de la classe PereNoel récupère l'objet de la classe Enfant et c'est à ce moment là que cela bloque

    classe LEPERNOEL :

    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
    import java.util.*;
     
     
    public class LEPERENOEL {
    	public static void main (String [] arg)
    	{
    	String n,i;
    	int nbe;
    	Scanner sc = new Scanner(System.in);
    	System.out.println("Donnez le nom du Pere noel :");
    	n = sc.next();
    	System.out.println("Donnez son adresse :");
    	i = sc.next();
    	PereNoel x = new PereNoel(n,i);
    	System.out.println("Entrez le nombre d'enfant :");
    	nbe = sc.nextInt();
    	for(int f=0; f<nbe; f++)
    	{
    		System.out.println("Entrez le nom du" +(f+1) + " enfant .");
    		n = sc.next();
    		System.out.println("Entrez l'adresse du " +(f+1) + " enfant .");
    		i = sc.next();
    		Enfant enf = new Enfant(n,i);
    		x.affecteEnfant(enf);
    	}	
     
     
    	}	
     
    }

    là c'est la méthode (de la classe PereNoel) qui récupère l'objet Enfant

    public void affecteEnfant(Enfant unEnfant)
    {
    lesEnfants[nbEnfants] =unEnfant;
    if(nbEnfants<99)nbEnfants++;
    else System.out.println("Trop d'enfants");
    }
    l'erreur obtenue :
    Exception in thread "main" java.lang.NullPointerException
    at PereNoel.affecteEnfant(PereNoel.java:23)
    at LEPERENOEL.main(LEPERENOEL.java:26)
    PereNoel.affecteEnfant(PereNoel.java:23) : correspond à cette ligne là

    lesEnfants[nbEnfants] =unEnfant;

    LEPERENOEL.main(LEPERENOEL.java:26): correspond à cette ligne là
    x.affecteEnfant(enf);

    je ne comprends pas ma faute pourriez vous m'aider

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    Citation Envoyé par lassoya Voir le message
    Exception in thread "main" java.lang.NullPointerException
    at PereNoel.affecteEnfant(PereNoel.java:23)
    at LEPERENOEL.main(LEPERENOEL.java:26)

    PereNoel.affecteEnfant(PereNoel.java:23) : correspond à cette ligne là
    lesEnfants[nbEnfants] =unEnfant;
    L'instruction lesEnfants[nbEnfants]=unEnfant; lève une NullPointerException.
    => le tableau lesEnfants est null
    => tu as du oublier d'initialiser ton tableau

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 102
    Points : 65
    Points
    65
    Par défaut
    je l'ai déclaré au début de la classe PereNoel

    private String nom;
    private String adresse;
    private Enfant[]lesEnfants;
    private int nbEnfants;
    private Jouet[]laHotte;
    private int nbJouets;

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    Le tableau est déclaré, mais pas initialisé.
    Il manque une instruction de la forme suivante, à placer soit au niveau de la déclaration de la variable (si tu restes sur une taille de tableau fixe de 99 cases) soit dans le constructeur (si tu veux pouvoir définir le nombre maximal d'enfants par un argument du constructeur) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lesEnfants = new Enfant[leNombreDeCasesVoulu];

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 102
    Points : 65
    Points
    65
    Par défaut
    Ben merci c'est bon ça marche ^^
    merci

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 20/01/2011, 15h47
  2. Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    Par Trint dans le forum Interfaces Graphiques en Java
    Réponses: 6
    Dernier message: 27/02/2007, 11h28
  3. Réponses: 8
    Dernier message: 11/05/2006, 19h32
  4. [JDIC]Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    Par kedare dans le forum Concurrence et multi-thread
    Réponses: 4
    Dernier message: 06/05/2006, 22h45

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