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 -
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 :
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; }
"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 avec objet qui vaut . Mais dans ce code là ça pourrait aussi être sur la boucle si liste vaut .
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.