NullPointerException

Fermé
anayoub Messages postés 1 Date d'inscription vendredi 5 mai 2017 Statut Membre Dernière intervention 5 mai 2017 - Modifié le 5 mai 2017 à 19:47
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 5 mai 2017 à 19:54
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 lundi 24 janvier 2011 Statut Membre Dernière intervention 24 août 2022 679
5 mai 2017 à 18:54
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 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
5 mai 2017 à 19:54
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