NullPointerException

anayoub Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,je débute en Java, je suis tombé sur la fameuse java.lang.NullPointerException mais que dois faire pour régler ce problème?
Je sais certainement qu'un pointeur ne dois pointer justement sur rien, ou qu'il existe un pb d'indice, mais en relisant mon code je ne vois pas ce qui provoque ceci, si quelqu'un peut m'aider, ca m'aiderait énormément.

Voiçi les morceaux de codes d'où viendrait le pb :

public class appl {
    public static void main(String[] args) throws ParseException {
        IAppareil appareil=new Appareil();
       
        appareil.enregistrer(new Contact(1, "C1", "06685231"));
        appareil.enregistrer(new Contact(2, "C2", "06418596"));
        appareil.enregistrer(new AppelEmi(1, new Date(), 66), "06685231");
        appareil.enregistrer(new AppelEmi(2, new Date(), 45), "06685231");
        appareil.enregistrer(new AppelEmi(3, new Date(), 123), "06418596");
        appareil.enregistrer(new AppelRecu(4, new Date(), 68), "06685231");
             
       
       
        System.out.println("-----------------------");
        System.out.println("Consulter le cout total d'un contact :");
        System.out.println(appareil.coutAppel(1));
       
      
       
    }
}

public class Appareil  implements IAppareil{
   
    public List<Contact> contacts=new ArrayList<Contact>();
    public List<Appel> appels=new ArrayList<Appel>();
   
   
    @Override
    public void enregistrer(Contact c) {
        contacts.add(c);
       
    }

    @Override
    public void enregistrer(Appel a, String NumTel) {
        for(Contact c:contacts)
            if(c.getNumeroTel().equals(NumTel))
                appels.add(a);
       
    }

    @Override
    public double coutAppel(int numeroContact) {
        double total = 0;
        for(Appel a:appels){
            if(a.getContact().getNumeroContact()==numeroContact)
            total=total+a.cout();
        }
        return total;
       
    }

1 réponse

Hydr0s Messages postés 1678 Date d'inscription   Statut Membre Dernière intervention   681
 
Salut,

java.lang.NullPointerException provient souvent d'un dépassement de capacité d'un tableau. En regardant dans le sens inverse les messages d'erreurs, tu peux en déduire d'où elle provient.

Pour formater ton code, tu peux utiliser les balises codes (à coter de gras, souligné...)
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Bonjour,

"java.lang.NullPointerException provient souvent d'un dépassement de capacité d'un tableau"
Non, ça c'est ArrayOutOfBoundsException (comme son nom l'indique).

NullPointerException c'est généralement quand on fait
objet.methode(param)
avec objet qui vaut
null
. Mais dans ce code là ça pourrait aussi être sur la boucle
for (objet : liste)
si liste vaut
null
.

Mais comme tu l'as dis, lire la stack trace de l'exception (la première ligne suffira) permettra de savoir exactement où est le code qui plante pour identifier quelle variable vaut null.
0