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

  FORUM HardWare.fr
  Programmation
  Java

  [debutant] java:NullPointerException

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[debutant] java:NullPointerException

n°1637024
flora806
Posté le 05-11-2007 à 17:48:04  profilanswer
 

Bonjour,
j'ai une NullPointerException que j'arrive pas à résoudre :??:  
Auriez-vous une explication?
--------------------------------------
classe Maclasse1
{....
 
//méthode
public test() {
for (int i = 0; i < mot.getClientsCount(); i++) {....}
}
"mot" est une instance d'une autre classe "MaClasse2"  qui contient la méthode "getClientsCount" (je veux qu'elle me retourne le nombre total de clients):
 public  int getClientsCount()
     {
      int TotalClients = 0;
      for (int[]dataLine : data )
      {
       if (dataLine[0] == Client) {
     for (int i=0; i < dataLine.length; i++)
         { TotalClients = dataLine[i];
         }
        }
         }
       
      return TotalClients;
     }
----------------------------
data est "data = new int [items.size()][5];" que je crée à partir d'une méthode ParseFile (BuffereReader...) dans "MaClasse2"
Dans la méthode du parse j'utilise cette boucle:
for (String item : items) {
     splitter = new StringTokenizer(item, " " );
      int Client = Integer.parseInt(splitter.nextToken());;
     int Article = Integer.parseInt(splitter.nextToken());
     int Prix = Integer.parseInt(splitter.nextToken());
}
 
--------------------------
j'espère que j'étais claire..
Merci.

mood
Publicité
Posté le 05-11-2007 à 17:48:04  profilanswer
 

n°1637333
Bidem
Posté le 06-11-2007 à 09:03:04  profilanswer
 

Où as-tu l'exception ?
 
Et petite astuce, quand tu as ce type d'exception, regarde (montre nous) plutot le code qui fait l'initialisation des variables (c'est là qu'il y a probablement un truc qui manque)

n°1637436
flora806
Posté le 06-11-2007 à 10:53:56  profilanswer
 

Concernant l'exception:
"Exception in thread "main" java.lang.NullPointerException"
ça concerne les lignes:
 
Code :
 
for (int i = 0; i < mot.getClientsCount(); i++)
 
.....dans la classe "MaClasse1"
 
et le main de cette classe:
 
Code :
 
public static void main(String[] args) throws Exception {
  new MaClasse1();
}

n°1637521
Bidem
Posté le 06-11-2007 à 12:23:47  profilanswer
 

ça doit être ta variable mot qui n'est pas initialisée.
 

Citation :

public test() {
for (int i = 0; i < mot.getClientsCount(); i++) {....}
}


 
donc, a priori, mot est un attibut de la classe MaClasse1 donc tu devrais avoir quelque part (surement dans le constructeur)
mot = new MaClasse2();

n°1637658
flora806
Posté le 06-11-2007 à 14:51:52  profilanswer
 

dans MaClasse1, je fais un import de  "MaClasse2" et j'intègre ça comme attribut de la classe:
public MaClasse2 mot;
et dans le constructeur de cette classe, j'ai mais "mot = new MaClasse2();"
et dans le Main, j'ai encore instancié MaClasse2 et j'ai fait appel à méthode test, mais j'ai une NullPointerException toujours :(

n°1638559
bugsan
Posté le 07-11-2007 à 17:53:21  profilanswer
 

Essai :

Code :
  1. if(mot==null) {System.out.println("mot est null =(" );System.out.flush();}
  2. for (int i = 0; i < mot.getClientsCount(); i++) {....}

n°1642522
bugbreeder
Posté le 14-11-2007 à 04:00:18  profilanswer
 

Salut,
 
Publie la totalite de ton code, ca doit pas etre si long, on fera un copier-coller pour reproduire l'erreur et on te la corrigera, ca ira beaucoup plus vite comme ca.
Autrement faut vraiment essayer de deviner, ca va pas le faire...
 
@++

n°1709619
tomi47
Posté le 29-03-2008 à 11:28:04  profilanswer
 

bonjour tout le monde!Je suis actuellement en train de faire un projet java qui consiste à évaluer une expression en affichant toutes les étapes et en utilisant une pile.Le problème est que depuis plusieurs jour je ne trouve pas l'erreur lorsque j'exécute le programme il me renvoi : java.lang.NullException
 
at Pile.sommet(pile.java:16)
at debut2.evaluation(debut2.java:139)
at debut2.main(debut2.java:16)
 
 
je sollicite votre aide Merci.
 
voici ce fameux programme :  
 

Code :
  1. import java.util.*;
  2. import java.util.StringTokenizer;
  3.  
  4. public class debut2  {
  5.  
  6. public static void main (String args [])  {
  7.      String ok=new String("oui" );
  8.       do  {
  9.         TextWindow.printLine("Donner l'expression a evaluer : " ) ;
  10.         String expression=TextWindow.readString();
  11.         StringTokenizer e=new StringTokenizer(expression);
  12.         
  13.         evaluation(e);
  14.  
  15.         TextWindow.printLine("voulez vous recommencer?" );
  16.          ok=TextWindow.readString();
  17.       } while(ok.equals("oui" ));
  18.   }
  19.  
  20. public static void evaluation (StringTokenizer e) {
  21.  
  22. Pile p = new Pile();
  23. String op=new String("+" );
  24. int b;
  25. int c;
  26. int resa;
  27. String resb;
  28. String ope;
  29.  
  30.     while (e.hasMoreTokens()) {
  31.     String i = e.nextToken();
  32.         if (estunnombre(i)) {
  33.         p.empiler(i);
  34.         }
  35.         else if (estunoperateur(i)) {
  36.             if (estprioritaire(op,i)) {
  37.             p.empiler(e.nextToken());
  38.             w = p.sommet();
  39.                        b=Integer.parseInt(w);
  40.             p.depiler();
  41.             ope = p.sommet();
  42.             p.depiler();
  43.             z = p.sommet();
  44.             c=Integer.parseInt(z);
  45.             p.depiler();
  46.                        resa=calculer(b,ope,c);
  47.             resb=Integer.toString(resa);
  48.             p.empiler(resb);
  49.                      }       /* fin de si estprioritaire */
  50.             else {    
  51.                            if (!(resteexpression(p)))  {        
  52.                                   p.empiler(i);       }   /* fin !resteexpression */
  53.                 else {
  54.                                w = p.sommet();
  55.                                b=Integer.parseInt(w);
  56.                     p.depiler();
  57.                     ope = p.sommet();
  58.                     p.depiler();
  59.                     z = p.sommet();
  60.                     c=Integer.parseInt(z);
  61.                                p.depiler();
  62.                                resa=calculer(b,ope,c);
  63.                     resb=Integer.toString(resa);
  64.                     p.empiler(resb);
  65.                         } /* fin de else */
  66.                              op=i;
  67.                              }  /* fin de else */
  68.           }   /* fin de else if */
  69.     }  /* fin de while */
  70.  
  71.  if (resteexpression(p))  {
  72.                             w = p.sommet();
  73.                                b=Integer.parseInt(w);
  74.                     p.depiler();
  75.                     ope = p.sommet();
  76.                     p.depiler();
  77.                     z = p.sommet();
  78.                     c=Integer.parseInt(z);
  79.                                p.depiler();
  80.                                resa=calculer(b,ope,c);
  81.                     resb=Integer.toString(resa);
  82.                     p.empiler(resb);
  83.        }  /* fin de if */
  84. }  /* fin de evaluation */
  85.  
  86.  public static boolean estunnombre(String valeur) {
  87.  for (int i = 0; i < valeur.length(); i++) {
  88.  char c = valeur.charAt(i);
  89.  if(c<'0' || c>'9') return false;
  90.  }
  91.  return true;
  92. }
  93.  
  94.  
  95. public static boolean estunoperateur(String x)   {
  96.     if (x.equals("+" ) || x.equals("-" ) || x.equals("*" )|| x.equals("/" )) {
  97.         return true; }
  98.     else { return false; }
  99. }
  100.  
  101. public static int calculer(int x, String a,int y) {
  102.   if ( a.equals("+" )) {
  103.   return x+y ; }
  104.  
  105.   else if ( a.equals("*" )) {
  106.   return x*y ; }
  107.  
  108.   else if ( a.equals("-" )) {
  109.   return x-y ; }
  110.  
  111.   else if ( a.equals("/" )) {
  112.   return x/y ; }
  113.    
  114.   else return -1 ;
  115.                  
  116.  }
  117.  
  118.  
  119. public static boolean estprioritaire(String premier , String deuxieme)  {
  120.   if ( (deuxieme.equals("x" ))||(deuxieme.equals("/" ))) {
  121.      return true;  }
  122.   else { return false ; }
  123.       }
  124.  
  125.  
  126. public static boolean resteexpression(Pile q)  {
  127.   String a=q.sommet();
  128.   q.depiler();
  129.  
  130. if (q.pileVide())  {
  131.   q.empiler(a);
  132. return false;   }
  133.   else {
  134. q.empiler(a);
  135. return true;  }
  136.  }
  137. }
  138.  
  139. public class Maillon {
  140.     String info;
  141.     Maillon suivant;
  142.  
  143.     public Maillon (Maillon s, String x) {
  144.     info=x;
  145.     suivant=s;
  146. }
  147.  
  148. @Override
  149.    public String toString() {
  150.        return info;
  151.    }
  152. }    
  153.  
  154. public class Pile {
  155.     Maillon sommet;
  156.     public Pile() {
  157.         sommet= null;
  158.     }
  159.     public Pile empiler (String e){
  160.         sommet=new Maillon (sommet,e);
  161.         return this;
  162.     }
  163.     public Pile depiler() {
  164.         sommet=sommet.suivant;
  165.         return this;
  166.     }
  167.     public String sommet () {
  168.         return this.sommet.info;
  169.     }
  170.     public void affichePile() {
  171.         TextWindow.printLine(sommet.toString());
  172.     }
  173.  
  174.        public boolean pileVide()  {
  175.                return sommet==null;    }
  176.  
  177. }


Message édité par Elmoricq le 29-03-2008 à 16:21:35
n°1709704
Elmoricq
Modérateur
Posté le 29-03-2008 à 16:19:21  profilanswer
 

Je me suis permis d'ajouter les balises de presentation de code a ton post, et supprime les nombreuses lignes vides superflues, parce que bon, tel quel, c'etait illisible.
 
edit : pour ton erreur, tu definis dans la classe Pile une variable "sommet". Dans le constructeur de la classe Pile, tu mets sommet a null !
Alors forcement, quand tu appelles la methode "sommet()" de la classe Pile, et que celle-ci tente de retourner this.sommet.info, tu te manges un NullPointerException.


Message édité par Elmoricq le 29-03-2008 à 16:25:10

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

  [debutant] java:NullPointerException

 

Sujets relatifs
[JavaCC] Modélisation UML d'une grammaire BNF décrite en Java[Débutant] Trier un tableau
De java à class ? Quelle démarche ?[Debutant] probleme boucle
pb "return" méthode java[C#] Question de débutant
Débutant Demande Conseil Sur C++java.net.SocketTimeOutException: Read Timed out
Manipuler une variable Java dans du code JavascriptManipuler un tableau Java dans du code Javascript
Plus de sujets relatifs à : [debutant] java:NullPointerException


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