Java erreur: java.lang.NullPointerException

Fermé
Marwawiss Messages postés 10 Date d'inscription lundi 30 avril 2012 Statut Membre Dernière intervention 1 mai 2012 - 1 mai 2012 à 13:35
Marwawiss Messages postés 10 Date d'inscription lundi 30 avril 2012 Statut Membre Dernière intervention 1 mai 2012 - 1 mai 2012 à 21:56
Bonjour,

j'écrit cette code dans une classe bibliothèque, un pour ajouté un document, dans un tableau d'élément de type Document2 qui déjà écrite.
mais il m'a dit erreur
"Exception in thread "main" java.lang.NullPointerException
at rouis_marwa2.Bibliothèque2.ajout_doc(Bibliothèque2.java:32)
at rouis_marwa2.Test_biblio2.main(Test_biblio2.java:17)"
dans la ligne "(listdoc[i].getNum_id() == d.getNum_id() "

public void ajout_doc(Document2 d)
{
int i=0;
for(i=0;i<nbr_document;i++)

{
if (listdoc[i].getNum_id() == d.getNum_id()
&&
listdoc[nbr_document].getNum_id() > d.getNum_id())

System.out.println("le num_id ajouté n'est pas à l'ordre!!!");
else
listdoc[nbr_document]=d;
nbr_document++;
System.out.println("le document est ajouté avec succée !!!");
}


}

A voir également:

2 réponses

katsuo49 Messages postés 330 Date d'inscription vendredi 19 juin 2009 Statut Membre Dernière intervention 11 novembre 2014 25
1 mai 2012 à 16:10
il faudrait que tu nous donne ta classe complète. Mais un java.lang.NullPointerException veut dire que tu utilises un objet que tu n'as pas instancié en général.
1
Marwawiss Messages postés 10 Date d'inscription lundi 30 avril 2012 Statut Membre Dernière intervention 1 mai 2012
1 mai 2012 à 18:34
il n'accepte ni get ni set il ma dit meme erreuur !!
la classe Document:

package rouis_marwa2;

public class Document2 {
private String titre;
private static int num_identification;
private int nbr_pages;
private String nom_auteur;


Document2(String t,int i,int nb,String n)/*Constructeur avec paramètre*/
{
titre=t;
num_identification=i;
nbr_pages=nb;
nom_auteur=n;

}
public void edition ()
{
{
System.out.println("le titre du document est: "+titre);
System.out.println("le numero d'identification du document est: "+num_identification);
System.out.println("le nombre de pages du document est: "+nbr_pages);
System.out.println("le nom de l'auteur du document est: "+nom_auteur);
}
}

public String getTitre()
{
return titre;
}




public int getNum_id()
{
return num_identification;
}

public int getNbr_pg()
{
return nbr_pages;
}


public String getNom()
{
return nom_auteur;
}


public void setTitre(String t)
{
this.titre=t;
}


public void setNum_id(int id)
{
Document2.num_identification=id;
}


public void setNbr_pg(int nb)
{
this.nbr_pages=nb;
}


public void setNom(String n)
{
this.nom_auteur=n;
}

}

La classe Bibliothèque:

package rouis_marwa2;

import java.util.Scanner;

public class Bibliothèque2
{
private int nbr_document;
private Document2[] listdoc = new Document2[nbr_document];


public Bibliothèque2(int nd)
{

this.nbr_document=nd;
listdoc = new Document2[nbr_document];
int i=0;
for(i=0;i<nbr_document;i++)
{
Scanner k1 = new Scanner(System.in);
System.out.println("Donner le titre n°"+i);// pour entrer le nouveau titre
String n1=k1.nextLine();

Scanner k2 = new Scanner(System.in);
System.out.println("Donner le numero d'identification n°"+i);// pour entrer le nouveau nbr page
int n2=k2.nextInt();

Scanner k3 = new Scanner(System.in);
System.out.println("Donner le nombre de page n°"+i);// pour entrer le nouveau nbr page
int n3=k3.nextInt();

Scanner k4 = new Scanner(System.in);
System.out.println("Donner le nom de l'auteur n°"+i);// pour entrer le nouveau nom
String n4=k4.nextLine();

listdoc[i].setTitre(n1);
listdoc[i].setNum_id(n2);
listdoc[i].setNbr_pg(n3);
listdoc[i].setNom(n4);
}

}

public int capacité()
{
System.out.println("le capacité maximale= "+listdoc.length);
return listdoc.length;

}

public void ajout_doc(Document2 d)
{

int i=0;
for(i=0;i<nbr_document;i++)

{
if (listdoc[nbr_document].getNum_id() == d.getNum_id()
&&
listdoc[nbr_document].getNum_id() > d.getNum_id())

System.out.println("le num_id ajouté n'est pas à l'ordre!!!");
else
listdoc[nbr_document]=d;
nbr_document++;
System.out.println("le document est ajouté avec succée !!!");
}


}

public Document2 recherche_doc(int num_id)
{ Document2 doc=null;
int i=0;
for (i=0;i<nbr_document;i++)
{
Document2 d=listdoc[i];
if (num_id==d.getNum_id())
{

System.out.println("***********le document recherché est :********");
doc=listdoc[i];
doc.edition();
}
else
System.out.println("****le document recherché n'existe pas!***** ");
}
return doc;
}




public void modifier_doc(int num_id)
{
int i=0;
for(i=0;i<nbr_document;i++)
{
if (num_id==listdoc[i].getNum_id())
{

Scanner i1 = new Scanner(System.in);
System.out.println("Donner un nouveau titre");// pour entrer le nouveau titre
String n1=i1.nextLine();

Scanner i2 = new Scanner(System.in);
System.out.println("Donner un nouveau nombre de page");// pour entrer le nouveau nbr page
int n2=i2.nextInt();

Scanner i3 = new Scanner(System.in);
System.out.println("Donner un nouveau nom de l'auteur");// pour entrer le nouveau nom
String n3=i3.nextLine();

listdoc[i].setTitre(n1) ;
listdoc[i].setNbr_pg(n2);
listdoc[i].setNom(n3);
}
}
}
public void supprim_doc(int num_id)
{
int i,j=0;
for(i=0;i<nbr_document;i++)
{
for(j=i;j<nbr_document;j++)
{
listdoc[j]=listdoc[j+1];
}
nbr_document=nbr_document+1;
}

}
public void inventaire_doc()
{
int i=0;
for (i=0;i<nbr_document;i++)
{

listdoc[i].edition();
}
}
public int getNombre_doc()
{
nbr_document=listdoc.length;
return nbr_document;

}}
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
1 mai 2012 à 19:52
Et où est le main ?
0
Marwawiss Messages postés 10 Date d'inscription lundi 30 avril 2012 Statut Membre Dernière intervention 1 mai 2012
1 mai 2012 à 20:04
package rouis_marwa2;

public class Test_biblio2
{
public static void main(String[]args)
{

Bibliothèque2 b=new Bibliothèque2(2);
Document2 d=new Document2 ("oui",1,3,"res");
b.ajout_doc(d);



}
}
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
Modifié par KX le 1/05/2012 à 20:41
Dans ton constructeur Bibliotheque2, tu ne peux pas faire listDoc[i].setTitre car listDoc[i] n'existe pas !
Il faut que tu utilises ton constructeur Document2.

Remarque : il est inutile de créer autant de Scanner que tu as d'entrée, un seul suffit !

public class Bibliothèque2 
{ 
private int nbr_document; 
private Document2[] listdoc; // pas d'initialisation ici, on ne connait pas nbr_document ! 

private static final Scanner clavier = new Scanner(System.in); 

public Bibliothèque2(int nd)  
{  
    nbr_document=nd;  
    listdoc = new Document2[nbr_document];  

    for (int i=0; i<nbr_document; i++)  
    {          
        // pour entrer le nouveau titre  
        System.out.println("Donner le titre n°"+i);  
        String n1 = clavier.nextLine();  

        // pour entrer le nouveau nbr page  
        System.out.println("Donner le numero d'identification n°"+i);  
        int n2 = clavier.nextInt(); clavier.nextLine();  

        // pour entrer le nouveau nbr page  
        System.out.println("Donner le nombre de page n°"+i);  
        int n3 = clavier.nextInt(); clavier.nextLine();  

        // pour entrer le nouveau nom  
        System.out.println("Donner le nom de l'auteur n°"+i);  
        String n4 = clavier.nextLine();  

        listdoc[i] = new Document2(n1, n2, n3, n4);  
    }  
}

Remarque : il y a d'autres erreurs après, mais tu arriveras peut-être à les corriger tout seul...
0
Marwawiss Messages postés 10 Date d'inscription lundi 30 avril 2012 Statut Membre Dernière intervention 1 mai 2012
1 mai 2012 à 21:01
mais après, dans la méthode d'ajout document j'ais pas comprit pourquoi il n'accepte pas cette ligne:
(listdoc[nbr_document].getNum_id() == d.getNum_id()
il affiche :
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at rouis_marwa2.Bibliothèque2.ajout_doc(Bibliothèque2.java:56)
at rouis_marwa2.Test_biblio2.main(Test_biblio2.java:10)
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
1 mai 2012 à 21:06
Parce que les indices d'un tableau de taille n doivent être entre 0 et n-1
Ici tu mets listdoc[nbr_document] ce qui est bien sûr trop !
0