java.lang.NullPointerException [Résolu]

Signaler
Messages postés
58
Date d'inscription
mardi 28 juillet 2009
Statut
Membre
Dernière intervention
24 mai 2010
-
Messages postés
58
Date d'inscription
mardi 28 juillet 2009
Statut
Membre
Dernière intervention
24 mai 2010
-
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

Messages postés
238
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
29 septembre 2011

Tout est écrit ici !!
Vérifie les packages

The possible meet the impossible to become the possimpible !!
Messages postés
238
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
29 septembre 2011

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 !!
Messages postés
58
Date d'inscription
mardi 28 juillet 2009
Statut
Membre
Dernière intervention
24 mai 2010

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
Messages postés
9
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
15 août 2009

Salut,

il faut que tu mette un "F" après le 0 quand tu initialise tes variables, genre : var = 0F;
Messages postés
58
Date d'inscription
mardi 28 juillet 2009
Statut
Membre
Dernière intervention
24 mai 2010

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
Messages postés
238
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
29 septembre 2011

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 !!
Messages postés
58
Date d'inscription
mardi 28 juillet 2009
Statut
Membre
Dernière intervention
24 mai 2010

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

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.
Messages postés
238
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
29 septembre 2011

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 !!
Messages postés
58
Date d'inscription
mardi 28 juillet 2009
Statut
Membre
Dernière intervention
24 mai 2010

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
Messages postés
9
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
15 août 2009

salut,

tes "println" tu les fait dans ton "else" ?
Messages postés
238
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
29 septembre 2011

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 !!
Messages postés
58
Date d'inscription
mardi 28 juillet 2009
Statut
Membre
Dernière intervention
24 mai 2010

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);
      }

Messages postés
238
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
29 septembre 2011

Avec "compareTo" cela ne fonctionne pas ?

The possible meet the impossible to become the possimpible !!
Messages postés
58
Date d'inscription
mardi 28 juillet 2009
Statut
Membre
Dernière intervention
24 mai 2010

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

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!!!!!
Messages postés
123
Date d'inscription
mardi 5 août 2003
Statut
Membre
Dernière intervention
26 août 2012
3
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...

@+
Messages postés
238
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
29 septembre 2011

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 !!
Messages postés
58
Date d'inscription
mardi 28 juillet 2009
Statut
Membre
Dernière intervention
24 mai 2010

merci les amies pour votre soutiens je vais utiliser la methodes aquals.
Messages postés
58
Date d'inscription
mardi 28 juillet 2009
Statut
Membre
Dernière intervention
24 mai 2010

sorry equals