Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1544 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  NullPointerException

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

NullPointerException

n°2208992
arhyaa
Posté le 02-11-2013 à 11:57:17  profilanswer
 

Bonjour à tous !
 
 
Et bienvenue dans l'enfer de ma nouvelle meilleure amie, la NullPointerException.
 
 
Pour information, j'ai bien lu le topic du débutant, mais je n'ai toujours pas trouvé de solution pour me débarrasser de mon encombrante nouvelle amie. Je viens donc chercher de l'aide ici.
 
 
Il s'agit donc d'un programme de Java. En gros, j'ai créé plusieurs classes me permettant de créer des graphes. J'ai donc à ma disposition une classe Graph, une classe Edge (arête) et une classe Vertex (sommet).  
 
 
Quelques morceaux de code :
 

Code :
  1. public class Graph {
  2. private TreeSet<Edge> edges;
  3. private TreeSet<Vertex> vertices;
  4. /** Constructeur de la classe Graph
  5.  *  
  6.  */
  7. public Graph() {
  8.  TreeSet<Edge> edges = new TreeSet<Edge>();
  9.  TreeSet<Vertex> vertices = new TreeSet<Vertex>();
  10. }


 
 

Code :
  1. public class Vertex implements Comparator, Comparable {
  2. private int num ;
  3. /** Constructeur de la classe Sommet
  4.  *  
  5.  * @param a qui représente le numéro du sommet
  6.  */
  7. public Vertex(int a){
  8.  this.num = a;
  9. }


 

Code :
  1. public class Edge<E,F> implements Couples<E, F>, Comparator, Comparable {
  2. private Vertex pere;
  3. private Vertex fils;
  4. /** Constructeur de la classe Edge
  5.  *  
  6.  * @param a qui représente le sommet père
  7.  * @param b qui représente le sommet fils
  8.  */
  9. public Edge(Vertex a, Vertex b) {
  10.  this.pere = a;
  11.  this.fils = b;
  12. }


 
Edit : Je précise que l'interface couple est une interface qui m'a été imposée dans l'exercice et qui ne contient qu'une fonction "afficher()".
 
 
Dans mon application, j'essaie de créer un graphe, deux sommets, une arête. Jusque là, tout fonctionne correctement (toString() à l'appui).
 
L'exception survient lorsque j'essaie d'ajouter une arête ou un sommet au graphe.  
 
 
Code de l'application :
 

Code :
  1. public static void main(String[] args) throws UnknownVertexException {
  2.  Graph g = new Graph();
  3.  g.toString(); //fonctionne
  4.         Vertex a = new Vertex(1);
  5.  Vertex b = new Vertex(2);
  6.  a.toString(); //fonctionne
  7.  b.toString(); //fonctionne
  8.  Edge e = new Edge(a,b);
  9.  e.toString();//fonctionne
  10.         g.addEdge(e);//NullPointerException ici


 
 
J'ai également essayé de simplement ajouter un sommet au graphe, mais l'exception est également levée.  
 
 
Code de l'ajout d'une arête :
 

Code :
  1. public void addEdge(Edge a) {
  2.  this.edges.add(a);
  3.  vertices.add(a.getFils());
  4.  vertices.add(a.getPere());
  5. }


 
 
J'ai également essayé de commenter les vertices.add, mais j'ai toujours ma NullPointerException. J'ai pensé que le problème pouvait venir de mes TreeSet, qui sont les seuls éléments null de tout mon code, mais je ne vois pas en quoi l'ajout d'un nouvel élément poserait problème. J'ai testé en créant un TreeSet<Vertex> directement dans mon application, puis en ajoutant un sommet, et cela fonctionne parfaitement.
 
 
J'attends vos idées  :whistle:


Message édité par arhyaa le 02-11-2013 à 12:03:30
mood
Publicité
Posté le 02-11-2013 à 11:57:17  profilanswer
 

n°2209041
lasnoufle
La seule et unique!
Posté le 02-11-2013 à 22:39:54  profilanswer
 

Code :
  1. public class Graph {
  2. private TreeSet<Edge> edges;
  3. private TreeSet<Vertex> vertices;
  4. /** Constructeur de la classe Graph
  5.  *  
  6.  */
  7. public Graph() {
  8.  TreeSet<Edge> edges = new TreeSet<Edge>();
  9.  TreeSet<Vertex> vertices = new TreeSet<Vertex>();
  10. }

Ton probleme vient de la. Dans ton constructeur, tu n'initialises pas tes variables privees, mais plutot deux variables locales et temporaires, qui disparaissent lors de la sortie du constructeur. Du coup tes variables "edges" et "vertices" de ton objet sont nulles et ca coince quand tu essaies d'y ajouter quelque chose. Pour corriger, il suffit d'enlever la re-declaration du constructeur:

Code :
  1. public class Graph {
  2. private TreeSet<Edge> edges;
  3. private TreeSet<Vertex> vertices;
  4. /** Constructeur de la classe Graph
  5.  *  
  6.  */
  7. public Graph() {
  8.  this.edges = new TreeSet<Edge>();
  9.  this.vertices = new TreeSet<Vertex>();
  10. }


Un petit truc: dans le futur, essaie de systematiquement "qualifier" tes variables quand tu t'en sers (je veux dire, utilise "this.tavariable" ). Ici ton erreur t'aurais alors saute aux yeux je pense.


---------------
C'était vraiment très intéressant.
n°2209052
arhyaa
Posté le 03-11-2013 à 03:30:33  profilanswer
 

Rolala, je n'avais pas du tout pensé à ça ! Merci beaucoup de ton aide !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  NullPointerException

 

Sujets relatifs
Erreur 500 NullPointerExceptionpb Webservice erreur NullPointerException [résolu]
Problème java.lang.NullPointerException[Débutant] Erreur : java.lang.NullPointerException
Problème java.lang.NullPointerException[debutant] java:NullPointerException
Erreur java.lang.NullPointerException[Swing] Evenement onClick : NullPointerException
Erreur NullPointerException !!Du vector à la NullPointerException, pourquoi ?
Plus de sujets relatifs à : NullPointerException


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR