Java erreur: java.lang.NullPointerException
Marwawiss
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
Marwawiss Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
Marwawiss Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
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 !!!");
}
}
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:
- Java erreur: java.lang.NullPointerException
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
2 réponses
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.
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;
}}
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;
}}
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 !
Remarque : il y a d'autres erreurs après, mais tu arriveras peut-être à les corriger tout seul...
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...
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)
(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)