java.lang.NullPointerException

Résolu
cs_nassr Messages postés 58 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 24 mai 2010 - 28 juil. 2009 à 16:38
cs_nassr Messages postés 58 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 24 mai 2010 - 30 juil. 2009 à 18:06
Slt
J'ai un probleme au niveau de mon application je voudrais faire un teste, je dois saisir dans des jTexField et que ma saisie doit respecter une regle c'est que la somme de certaine jTextfield doit etre egale a jTextField 1 alors je vous montre mon code.
   int index = jTable1.getSelectedRow();

      Float var1,var2,var3,var4,var5,var6,var7,var;


        if (! (jTextField2.getText().equals("")))
            var1=Float.valueOf(jTextField2.getText());

            else
                var1=null;
        if (! (jTextField3.getText().equals("")))
            var2=Float.valueOf(jTextField3.getText());

            else
                var2=null;
        if (! (jTextField4.getText().equals("")))
            var3=Float.valueOf(jTextField4.getText());

            else
                var3=null;
        if (! (jTextField5.getText().equals("")))
            var4=Float.valueOf(jTextField5.getText());

            else
                var4=null;
        if (! (jTextField6.getText().equals("")))
            var5=Float.valueOf(jTextField6.getText());

            else
                var5=null;
        if (! (jTextField7.getText().equals("")))
            var6=Float.valueOf(jTextField7.getText());

            else
                var6=null;
        if (! (jTextField8.getText().equals("")))
            var7=Float.valueOf(jTextField8.getText());

            else
                var7=null;

        var = var2+var3+var4+var5+var6+var7;


    if (var==var1){

           QuittancierGeneral.updateQg(jTextField1.getText(),var1,var2,var3,var4,var5,var6,var7, Integer.parseInt(matrix[index][0].toString() ));
    initJtable();
    validate();
    jPanel2.setVisible(false);
      }
      else{
          JOptionPane.showMessageDialog(null, "ERREUR, vérifier votre saisie!!", "Avertissement", JOptionPane.ERROR_MESSAGE);
      }


    } 



Mais je reçois une erreur de type
exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

l'erreur est indiqué au niveau de cette ligne
var = var2+var3+var4+var5+var6+var7;

SVP es que quelqu'un peut me dire qu'elle est le pb. je signale que je suis un debutant en programmation.

20 réponses

cs_MoH008 Messages postés 238 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 29 septembre 2011 1
29 juil. 2009 à 23:04
Tout est écrit ici !!
Vérifie les packages

The possible meet the impossible to become the possimpible !!
3
cs_MoH008 Messages postés 238 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 29 septembre 2011 1
28 juil. 2009 à 17:16
Salut,
tu devrais plutôt mettre var 0 au lieu de var null. Si tu as cette exception c'est que tu as une variable qui est null...
De plus je te conseille aussi d'initialiser tes variables.


The possible meet the impossible to become the possimpible !!
0
cs_nassr Messages postés 58 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 24 mai 2010
28 juil. 2009 à 22:58
mais si vous remarquez var est une variable de type float donc elle n'accepte pas comme initialisation var=0 'incompatible type' c'est l'erreur qu'il affiche
j'attend toujour la reponse SVP
0
floufi Messages postés 9 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 15 août 2009
28 juil. 2009 à 23:12
Salut,

il faut que tu mette un "F" après le 0 quand tu initialise tes variables, genre : var = 0F;
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_nassr Messages postés 58 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 24 mai 2010
28 juil. 2009 à 23:27
merci pour votre reponse c'etait util j'ai jamais vue cette initialisation
mais j'ai toujour l'erreur java.lang.NullPointerException
je ne sais pas d'ou vient le probleme je suis bloqué svp quelqu'un m'aide
0
cs_MoH008 Messages postés 238 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 29 septembre 2011 1
28 juil. 2009 à 23:57
Toutes tes variables de type Float sont initialisées avec "0F"?
Tu as un débugger ? regarde la valeur de chaque variable de la ligne :
var = var2+var3+var4+var5+var6+var7;

A mon avis elles sont surement toutes nulles.

Ce lien te montre une classe qui pourrait t'être utile.

PS: Désolé je n'ai rien aucun outils pour effectuer des test !!!

The possible meet the impossible to become the possimpible !!
0
cs_nassr Messages postés 58 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 24 mai 2010
29 juil. 2009 à 02:38
oui j'ai initialiser toutes mes variables mais toujour le meme probleme je vais voir cette classe si elle serait utile. en tous cas merci pour votre aide
0
cs_nassr Messages postés 58 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 24 mai 2010
29 juil. 2009 à 02:47
malheureusement j'ai pas pu trouver quelque chose d'util dans la classe que vous m'avez envoiyé.
j'attend toujour une reponse et merci.
0
cs_MoH008 Messages postés 238 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 29 septembre 2011 1
29 juil. 2009 à 03:00
Enlève tout tes else {var = null;} cela sera déjà plus clair si tu as initialisés correctement tes variables, cela ne posera aucun souci et cela écartera aussi le fait que ta variable puisse prendre une autre valeur que celle contenue dans ta jTextField.


The possible meet the impossible to become the possimpible !!
0
cs_nassr Messages postés 58 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 24 mai 2010
29 juil. 2009 à 18:30
premierement merci pour votre reponse c'est vrais qu'elle m'a resolus le probleme de "java.lang.NullPointerException "
mais si vous remarquer, j'effectue un test si var==var1 il va effectuer l'ajout sinon il va afficher un message d'erreur. le probleme c'est qu'il affiche toujour le message d'erreur meme si var==var1,
j'ai fait un
System.out.println(var);
System.out.println(var1);
//sachant que var1 et var sont des valeur saisit du clavier

il m'affiche la meme valeur(var=var1) mais le message d'erreur apparait toujour.
Es qu'il ya une autre possibilité pour faire ce test. merci
0
floufi Messages postés 9 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 15 août 2009
29 juil. 2009 à 19:52
salut,

tes "println" tu les fait dans ton "else" ?
0
cs_MoH008 Messages postés 238 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 29 septembre 2011 1
29 juil. 2009 à 20:26
Salut,
tu as la méthode "compareTo" de la classe Float!
Si tu affiches toujours la boîte de dialogue d'erreur c'est que les valeurs sont différentes !! Donc ta comparaison n'est pas la bonne...

Tes "println" sont avant le test (var == var1)??


The possible meet the impossible to become the possimpible !!
0
cs_nassr Messages postés 58 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 24 mai 2010
29 juil. 2009 à 21:10
oui mais println sont avant le test voici l'exemple
    var = var2+var3+var4+var5+var6+var7;
     System.out.println(var);
        System.out.println(var1);

    if (var==var1){

           QuittancierGeneral.updateQg(jTextField1.getText(),var1,var2,var3,var4,var5,var6,var7, Integer.parseInt(matrix[index][0].toString() ));
    initJtable();
    validate();
    jPanel2.setVisible(false);
      }
      else{
          JOptionPane.showMessageDialog(null, "ERREUR, vérifier votre saisie!!", "Avertissement", JOptionPane.ERROR_MESSAGE);
      }

0
cs_MoH008 Messages postés 238 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 29 septembre 2011 1
29 juil. 2009 à 21:16
Avec "compareTo" cela ne fonctionne pas ?

The possible meet the impossible to become the possimpible !!
0
cs_nassr Messages postés 58 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 24 mai 2010
29 juil. 2009 à 23:01
SVP j'ai chercher partous cette methode compareTo j'ai trouver des exemples mais lorsque je fait applet a cette methode il ne la conait pas .
vous pouvait me donner un exemple.
0
cs_nassr Messages postés 58 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 24 mai 2010
30 juil. 2009 à 00:45
je vous remercie bcp pour votre soutiens c'est bien marché j'ai chercher un exemple pour la methode compareTo que j'ai utilisé en fin le pb est résolus.
vraiment ce forum m'a facilité la programmation surtout que parfois on rencontre des problemes où on reste bloqué meme 3 jours ou plus mais avec l'aide des personnes comme vous et d'autre ca ne peut etre pas le cas.
en plus ca renforce nos acquis au niveau de la programmation.
en tous cas merci d'avoir m'aider.
reponse acceptée!!!!!
0
Madvin Messages postés 123 Date d'inscription mardi 5 août 2003 Statut Membre Dernière intervention 26 août 2012 3
30 juil. 2009 à 14:43
Salut,

Juste une précision pour vous éclairer un peu plus...

Ta comparaison "var==var1" est évaluée à TRUE si et seulement si var et var1 sont les mêmes objets.
En effet, var et var1 sont typés par Float, qui est une classe héritant d'Object.
Or, pour toute variable typée par une classe héritant d'Object, l'opérateur "==" effectue une comparaison sur les pointeurs des objets et pas sur les valeurs de leurs attributs. Pour pouvoir faire une comparaison des objets selon leurs valeurs spécifiques, il faut implémenter et utiliser la méthode "equals" héritée de la classe Object.
Donc dans ton cas, il fallait comparer tes objets Float comme ceci : "var.equals(var1)" qui renvoie TRUE si et seulement si la valeur du flottant stockée par l'objet "var" est la même que celle stockée par l'objet "var1".
C'est une erreur typique, très fréquente...

Par contre, ta comparaison "var==var1" aurait fonctionné si tes variables "var" et "var1" étaient typées par le type primitif "float".
En effet, tout type primitif (int, float, long, etc...) n'héritant pas de la classe "Object", les comparaisons s'effectuent directement grâce aux opérateurs (<, ==, !=, >, <=, etc...).
Pour simplifier, on pourrait dire que les variables typées par un type primitif ne sont pas des objets, mais juste des valeurs.
C'est d'ailleurs pour ça qu'à la base Java n'était pas un langage dit "tout objet", car le langage pouvait manipuler des variables qui ne référençaient pas des instances de la classe Object.

La méthode "compareTo" a à peu près le même rôle que "equals", sauf qu'elle permet de comparer des objets, pas seulement sur leur égalité : à savoir plus petit, égal, ou plus grand.
Dans ton cas donc, "var.equals(var1)" renvoie la même valeur que "var.compareTo(var1) == 0". Cependant, l'utilisation de "equals" est plus propre et plus lisible pour effectuer une égalité.

Voilà, en espérant que cela vous aide à y voir plus clair...

@+
0
cs_MoH008 Messages postés 238 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 29 septembre 2011 1
30 juil. 2009 à 14:59
Salut,
merci bien pour ton explication! Je m'y perds toujours dans cette histoire, je n'arrive pas à retenir cette différence pourtant fondamentale...


The possible meet the impossible to become the possimpible !!
0
cs_nassr Messages postés 58 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 24 mai 2010
30 juil. 2009 à 18:00
merci les amies pour votre soutiens je vais utiliser la methodes aquals.
0
cs_nassr Messages postés 58 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 24 mai 2010
30 juil. 2009 à 18:06
sorry equals
0
Rejoignez-nous