Bonsoir,
Je débute en Java et je reçois ce message à l'execution
Cela arrive au moment où je parcours un tableau d'objet : voila mon code
import java.util.*;
public class departement {
private String nom;
private personne [] tabpers;
public departement (String nom)// constructeur1 ->création d'un nouveau département
{
this.nom=nom;
}
public departement(personne pers) // constructeur2 -> l'objet pers est la personne qui veut changer de département
{
supprime(pers);
ajout(pers); // rajjoute cette personne dans le tableau
}
public departement ()
{
}
public boolean check_nom(String nom)
{ boolean test=false;
for (int j=0;j<tabpers.length;j++)
if (tabpers[j].Getnom().equals(nom)) { test=true;}
if (test==true) { return true;}
else { return false; }
}
public boolean supprime (personne pers)
{
for (int j=0;j<tabpers.length;j++) // parcourt le tableau jusqu'au dernier
{
if (pers.Getnom().equals(tabpers[j].Getnom())) // parcourt le tableau jusqu'à ce qu'il trouve cette personne ensuite tous les champs sont remis à null;
{ tabpers[j]=null;
//i--; //décremente le nombre de personne dans ce département
return true;
}
}
return false; // si pas supprimer
}
public boolean ajout(personne pers)
{
if (pers.Getdep().equals(this.nom))// verifie si la personne est dans le bon département
{
for (int j=0;j<tabpers.length;j++)
{ if (tabpers[j].Getnom().equals(""))//cherche un emplacement vide
{ tabpers[j]=pers; //ajoute cette personne dans le departement
//i++; // incrémente le nombre de personne
}
}
return true;
}
else { return false;}
}
public String Getdep()
{
return this.nom;// Pour savoir dans quel département on se trouve ...
}
public boolean muter(personne pers,String nom)// le nom représente le département vers lequel on veut muter
{
if (pers.Setdept(nom)==true) { return true;} // change de département .Si existe pas alors créer un nouveau département
else return false;
}
}// fin classe
/************************************
Et ma deuxieme classe (main)
public class principal {
private static int i;
departement tab [];
public void encode ()
{
String nom=null;
departement d= new departement();
String prenom=null;
int annee=0;
int mois=0;
int jour=0;
String dept=null;
departement dep = null;
System.out.println("Encodage d'une nouvelle personne");
System.out.println("Entrez le nom : ");
nom=clavier.lireString();
System.out.println(" Entrez le prénom");
prenom=clavier.lireString();
System.out.println("Entrez le jour de naissance");
jour=clavier.lireInt();
System.out.println("Entrez le mois");
mois=clavier.lireInt();
System.out.println("Entrez l'annee ");
annee=clavier.lireInt();
System.out.println("Entrez votre département");
dept=clavier.lireString();
if (d.check_nom(dept)==false) // cherche si département existant si non alors on le créer
{dep=new departement(dept);
}
personne obj1=new personne(nom,prenom,annee,mois,jour,dep); // créer une nouvelle personne
if (d.ajout(obj1)==true)
{ System.out.println("Ajout effectué avec succès");
}
else {System.out.println(" Ceci n'est pas le bon département");
}
}
public static void main(String[] args) {
int choix=0;
principal p=new principal();
System.out.println(" [1] Pour créer une nouvelle personne ");
System.out.println(" [2] Pour supprimer une personne");
System.out.println(" [3] Pour muter une personne vers un autre departement");
choix=clavier.lireInt();
switch (choix)
{
case 1 : p.encode();
/* case 2: delete();
case 3: muter();
}
*/
}
}
}
//***************************************
et la classe personne
->>>>>>>>
import java.util.*;
public class personne
{
private static int compteur;
private int id;
private String nom;
private String prenom;
private GregorianCalendar date_naiss;
private departement dep;
public personne(String nom,String prenom,int annee,int mois,int jour,departement dep)
{ this.nom=nom;
this.prenom=prenom;
this.date_naiss.add(Calendar.DATE,jour);
this.date_naiss.add(Calendar.MONTH,mois);
this.date_naiss.add(Calendar.YEAR,annee);
this.dep=dep;// dep est un département et va ajouter cette personne dans le tableau de son département !!!
}
public String Getnom()
{ return nom;
}
public String Getprenom()
{
return prenom;
}
public departement Getdep()
{
return dep;
}
public boolean Setdept(String nom)
{
departement p=new departement();
if (p.check_nom(nom)==true) // si departement existe -> renvoie true
{
this.dep=new departement(this);// créer une nouvelle personne dans ce departement (ajout et suppresion de l'ancien)
return true;
}
else return false;
}
public void Setnom (String nom)
{
this.nom=nom;
}
public void Setprenom(String prenom)
{ this.prenom=prenom;
}
}
Si qqun a le courage de relire le code sinon je comprendrai ...
Les erreurs sont
->
Exception in thread "main" java.lang.NullPointerException
at departement.check_nom(
departement.java:46)
at principal.encode(
principal.java:35)
at principal.main(
principal.java:84)
Un grand merci à vous !!