NullPointerException

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

  1. 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é...)
    1. Modérateur
      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.