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 :

probleme NullPointer avec une liste mais je ne comprends pas pourquoi


Sujet :

Langage Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 12
    Points : 7
    Points
    7
    Par défaut probleme NullPointer avec une liste mais je ne comprends pas pourquoi

    Bonjour, je ne sais pas si ma question est trop "idiote" ou non mais je débute en java et j'espere que vous serez indulgents!

    J'ai créé une classe Expression qui m'a lair de bien fonctionner et j'ai créé une deuxieme classe ArbreNAire avec un constructeur partant d'une expression et créant un Arbre (d'attributs un noeud de type expression et une liste des "fils" de l'expression)

    Par exemple pour l'expression 5 + 2*x

    L'arbre serait : noeud : +
    Liste : (noeud 5, liste vide), (noeud *, liste 2,x)
    Mais voilà : au moment où je veux rajouter les fils à la liste : fils.add( ..) On me pointe une erreur Null pointer alors que je rajoute des éléments! Voici le code :

    public class ArbreNAire {
    private Expression noeud;
    private List fils;


    public ArbreNAire() {
    noeud = null;
    fils = new LinkedList();
    }


    public ArbreNAire (Expression exp) {
    if (exp.typage() == "constante" || exp.typage() == "variable") {
    noeud = exp;
    fils = null;
    }
    else if (exp.typage() == "terme") {
    noeud = exp.retourneOperateur();
    fils.add(new ArbreNAire(exp.retournePremierOperande()));
    fils.add(new ArbreNAire(exp.retourneDeuxiemeOperande()));
    }
    else if (exp.typage() == "application") {
    noeud = exp.retourneFonction();
    fils.add(new ArbreNAire(exp.retourneargument()));
    }
    }

    public static void main (String Args []) {
    Expression expr = new Expression (new Expression('x'), '+',new Expression( 3));
    ArbreNAire arb = new ArbreNAire(expr);
    }

    }




    Exception in thread "main" java.lang.NullPointerException
    at ArbreNAire.<init>(ArbreNAire.java:24) [c'est à dire au premier fils.add=
    at ArbreNAire.main(ArbreNAire.java:35) (c'est à dire la dernière ligne)

    J'espere que vous trouvrez mon erreur
    MErci d'avance!
    Ethan le débutant en java

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 68
    Points : 58
    Points
    58
    Par défaut
    Je pense que ton problème provient d'un Null retourné par la fonction retournePremierOperande() à la ligne 24.

    Il serait plus simple de t'aider si tu donnais également le code de la classe Expression...

  3. #3
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Le nullPointerException est dans la majorité des cas du à un oubli d'instanciation d'objet (très rarement d'une affectation volontaire de null).
    --> Mets des println sur tes différents objets aux endroits d'où provient l'exception (le numéro de ligne doit être donné).

  4. #4
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    salut

    bah en fait c'est fils qui n'est pas initialisé.

    proposition de correction :
    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
     
    public ArbreNAire (Expression exp) {
     fils = new LinkedList();
     if (exp.typage() == "constante" || exp.typage() == "variable") {
      noeud = exp;
      fils = null;
     }
     else if (exp.typage() == "terme") {
      noeud = exp.retourneOperateur();
      fils.add(new ArbreNAire(exp.retournePremierOperande()));
      fils.add(new ArbreNAire(exp.retourneDeuxiemeOperande()));
     }
     else if (exp.typage() == "application") {
      noeud = exp.retourneFonction();
      fils.add(new ArbreNAire(exp.retourneargument()));
     }
    }

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Oki merci pour ces réponses !

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

Discussions similaires

  1. Ca marche mais je ne comprend pas pourquoi
    Par murgen23 dans le forum Composants
    Réponses: 5
    Dernier message: 14/11/2008, 13h25
  2. Ma jolie macro fonctionne mais je ne comprends pas pourquoi ^
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 01/07/2007, 06h06
  3. petit probleme avec une liste chainée
    Par kamouminator dans le forum C
    Réponses: 26
    Dernier message: 06/11/2006, 20h18
  4. COM : _com_ptr_t ca marche mais je ne comprend pas pourquoi
    Par dockurt2k dans le forum Visual C++
    Réponses: 4
    Dernier message: 21/08/2006, 12h28
  5. [MySQL] Problème avec une liste déroulante
    Par leloup84 dans le forum SQL Procédural
    Réponses: 19
    Dernier message: 24/01/2006, 12h57

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