Pourquoi le pointeur est nul

ciarawom Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour, voici le code de ma méthode, ici l'erreur c'est toujours java.lang.NullPointerException
at fr.emse.simulator.MyCell.getColor(MyCell.java:52)
et je ne comprends pas pourquoi il est nul?


public Color getColor(){



if (this.nature.type.equals("W")) {
return this.couleur=new Color(0,0,255);}
if (this.nature.type.equals("F"))
return this.couleur= new Color(0,255,28);
if (this.nature.type.equals("P"))
return this.couleur=new Color(7);
if (this.nature.type.equals("T"))
return this.couleur=new Color(0xff, 0xff, 0x00);
if (this.burned==true){

return this.couleur=new Color(80,80,80);}

return this.couleur;


}

2 réponses

tribun Messages postés 64861 Date d'inscription   Statut Membre Dernière intervention   12 547
 
Bonjour.
java est une source de problème sur les pc.
Vois ceci pour t'aider.

http://translate.google.be/...

Qui aime l'instruction ! trouve la connaissance qui vient de la réflexion !
PS. Créez souvent un point de restauration ! cela résout pas mal de problèmes.
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
"java est une source de problème sur les pc."
D'ailleurs programmer en Java est aujourd'hui un crime et la délation bat son plein à l'encontre de quiconque essayerait encore d'utiliser cette tare de l'informatique !
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Généralement une référence est null parce que c'est la valeur par défaut puisque aucun objet ne lui est attribué. Cela se corrige en initialisant correctement les valeurs.

public Color getColor()
{
    if (nature==null)
        throw new IllegalStateException("nature n'est pas initialisé");
    
    if (nature.type==null)
        throw new IllegalStateException("nature.type n'est pas initialisé");
    
    if (nature.type.equals("W"))
        couleur = new Color(0,0,255);
    else if (nature.type.equals("F")) 
        couleur = new Color(0,255,28); 
    else if (nature.type.equals("P")) 
        couleur = new Color(7); 
    else if (nature.type.equals("T")) 
        couleur = new Color(0xff, 0xff, 0x00); 
    else if (burned)
        couleur = new Color(80,80,80);} 
    
    return couleur;
}

Remarque : il est étonnant d'avoir un getteur qui modifie la valeur d'un attribut, d'autant plus conditionné par la valeur d'un deuxième attribut ! On s'attendrait plutôt à avoir seulement un "return couleur;" dans le getColor, ou alors de ne pas avoir du tout d'attribut "couleur", sa valeur étant uniquement décrite par nature.typeLa confiance n'exclut pas le contrôle
0