java.lang.NullPointerException [Résolu]

Messages postés
58
Date d'inscription
mardi 28 juillet 2009
Statut
Membre
Dernière intervention
24 mai 2010
- - Dernière réponse : 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.
Afficher la suite 

20 réponses

Meilleure réponse
Messages postés
238
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
29 septembre 2011
3
Merci
Tout est écrit ici !!
Vérifie les packages

The possible meet the impossible to become the possimpible !!

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_MoH008
Messages postés
238
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
29 septembre 2011
0
Merci
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 !!
Commenter la réponse de cs_MoH008
Messages postés
58
Date d'inscription
mardi 28 juillet 2009
Statut
Membre
Dernière intervention
24 mai 2010
0
Merci
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
Commenter la réponse de cs_nassr
Messages postés
9
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
15 août 2009
0
Merci
Salut,

il faut que tu mette un "F" après le 0 quand tu initialise tes variables, genre : var = 0F;
Commenter la réponse de floufi
Messages postés
58
Date d'inscription
mardi 28 juillet 2009
Statut
Membre
Dernière intervention
24 mai 2010
0
Merci
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
Commenter la réponse de cs_nassr
Messages postés
238
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
29 septembre 2011
0
Merci
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 !!
Commenter la réponse de cs_MoH008
Messages postés
58
Date d'inscription
mardi 28 juillet 2009
Statut
Membre
Dernière intervention
24 mai 2010
0
Merci
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
Commenter la réponse de cs_nassr
Messages postés
58
Date d'inscription
mardi 28 juillet 2009
Statut
Membre
Dernière intervention
24 mai 2010
0
Merci
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.
Commenter la réponse de cs_nassr
Messages postés
238
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
29 septembre 2011
0
Merci
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 !!
Commenter la réponse de cs_MoH008
Messages postés
58
Date d'inscription
mardi 28 juillet 2009
Statut
Membre
Dernière intervention
24 mai 2010
0
Merci
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
Commenter la réponse de cs_nassr
Messages postés
9
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
15 août 2009
0
Merci
salut,

tes "println" tu les fait dans ton "else" ?
Commenter la réponse de floufi
Messages postés
238
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
29 septembre 2011
0
Merci
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 !!
Commenter la réponse de cs_MoH008
Messages postés
58
Date d'inscription
mardi 28 juillet 2009
Statut
Membre
Dernière intervention
24 mai 2010
0
Merci
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);
      }

Commenter la réponse de cs_nassr
Messages postés
238
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
29 septembre 2011
0
Merci
Avec "compareTo" cela ne fonctionne pas ?

The possible meet the impossible to become the possimpible !!
Commenter la réponse de cs_MoH008
Messages postés
58
Date d'inscription
mardi 28 juillet 2009
Statut
Membre
Dernière intervention
24 mai 2010
0
Merci
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.
Commenter la réponse de cs_nassr
Messages postés
58
Date d'inscription
mardi 28 juillet 2009
Statut
Membre
Dernière intervention
24 mai 2010
0
Merci
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!!!!!
Commenter la réponse de cs_nassr
Messages postés
123
Date d'inscription
mardi 5 août 2003
Statut
Membre
Dernière intervention
26 août 2012
3
0
Merci
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...

@+
Commenter la réponse de Madvin
Messages postés
238
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
29 septembre 2011
0
Merci
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 !!
Commenter la réponse de cs_MoH008
Messages postés
58
Date d'inscription
mardi 28 juillet 2009
Statut
Membre
Dernière intervention
24 mai 2010
0
Merci
merci les amies pour votre soutiens je vais utiliser la methodes aquals.
Commenter la réponse de cs_nassr
Messages postés
58
Date d'inscription
mardi 28 juillet 2009
Statut
Membre
Dernière intervention
24 mai 2010
0
Merci
sorry equals
Commenter la réponse de cs_nassr