Souci programme en JAVA
Résolu
Bonjour,
je débute en java et j'essaye de créé un petit programme juste pour m'entrainer, seulement j'ai une erreur (Exception in thread "main" java.lang.NullPointerException) lors du lancement (voir <===== c'est la ligne qui pose problème)
Savez vous pourquoi l'erreur ce produit ?
merci
static class Aeroport{
String nomAeroport;
String adresseAeroport;
CompagnieAerienne[] tabCompaAer=new CompagnieAerienne[2];
HangAvionCompAer[] HangAvion=new HangAvionCompAer[2];
}
static class CompagnieAerienne{
String nomCompAer;
int nbrAvionAloue;
}
static class HangAvionCompAer{
int numHangar;
AvionCompAer[] AvionComp = new AvionCompAer[2];
}
static class AvionCompAer{
int numAvion;
int nbrPlacesAvion;
String etatAvion;
String destAvion;
}
static void InitCompAer(Aeroport aero){
aero.nomAeroport="ROISSY";
aero.adresseAeroport="PARIS";
CompagnieAerienne CA1 = new CompagnieAerienne();
CA1.nbrAvionAloue=5;
CA1.nomCompAer="AIRBUS";
aero.tabCompaAer[0]=CA1;
CompagnieAerienne CA2 = new CompagnieAerienne();
CA2.nbrAvionAloue=7;
CA2.nomCompAer="BOEING";
aero.tabCompaAer[1]=CA2;
}
static void InitAvionComp(Aeroport aero){
AvionCompAer A1=new AvionCompAer();
A1.numAvion=1001;
A1.nbrPlacesAvion=200;
A1.etatAvion="GARAGE";
A1.destAvion="null";
aero.HangAvion[0].AvionComp[0]=A1; <============================
AvionCompAer A2=new AvionCompAer();
A1.numAvion=1002;
A1.nbrPlacesAvion=200;
A1.etatAvion="GARAGE";
A1.destAvion="null";
aero.HangAvion[0].AvionComp[1]=A2;
AvionCompAer B1=new AvionCompAer();
A1.numAvion=2001;
A1.nbrPlacesAvion=200;
A1.etatAvion="GARAGE";
A1.destAvion="DISABLE";
aero.HangAvion[1].AvionComp[0]=B1;
AvionCompAer B2=new AvionCompAer();
A1.numAvion=2002;
A1.nbrPlacesAvion=200;
A1.etatAvion="GARAGE";
A1.destAvion="DISABLE";
aero.HangAvion[1].AvionComp[1]=B2;
}
je débute en java et j'essaye de créé un petit programme juste pour m'entrainer, seulement j'ai une erreur (Exception in thread "main" java.lang.NullPointerException) lors du lancement (voir <===== c'est la ligne qui pose problème)
Savez vous pourquoi l'erreur ce produit ?
merci
static class Aeroport{
String nomAeroport;
String adresseAeroport;
CompagnieAerienne[] tabCompaAer=new CompagnieAerienne[2];
HangAvionCompAer[] HangAvion=new HangAvionCompAer[2];
}
static class CompagnieAerienne{
String nomCompAer;
int nbrAvionAloue;
}
static class HangAvionCompAer{
int numHangar;
AvionCompAer[] AvionComp = new AvionCompAer[2];
}
static class AvionCompAer{
int numAvion;
int nbrPlacesAvion;
String etatAvion;
String destAvion;
}
static void InitCompAer(Aeroport aero){
aero.nomAeroport="ROISSY";
aero.adresseAeroport="PARIS";
CompagnieAerienne CA1 = new CompagnieAerienne();
CA1.nbrAvionAloue=5;
CA1.nomCompAer="AIRBUS";
aero.tabCompaAer[0]=CA1;
CompagnieAerienne CA2 = new CompagnieAerienne();
CA2.nbrAvionAloue=7;
CA2.nomCompAer="BOEING";
aero.tabCompaAer[1]=CA2;
}
static void InitAvionComp(Aeroport aero){
AvionCompAer A1=new AvionCompAer();
A1.numAvion=1001;
A1.nbrPlacesAvion=200;
A1.etatAvion="GARAGE";
A1.destAvion="null";
aero.HangAvion[0].AvionComp[0]=A1; <============================
AvionCompAer A2=new AvionCompAer();
A1.numAvion=1002;
A1.nbrPlacesAvion=200;
A1.etatAvion="GARAGE";
A1.destAvion="null";
aero.HangAvion[0].AvionComp[1]=A2;
AvionCompAer B1=new AvionCompAer();
A1.numAvion=2001;
A1.nbrPlacesAvion=200;
A1.etatAvion="GARAGE";
A1.destAvion="DISABLE";
aero.HangAvion[1].AvionComp[0]=B1;
AvionCompAer B2=new AvionCompAer();
A1.numAvion=2002;
A1.nbrPlacesAvion=200;
A1.etatAvion="GARAGE";
A1.destAvion="DISABLE";
aero.HangAvion[1].AvionComp[1]=B2;
}
5 réponses
-
Salut,
Quel est la valeur de aero que tu passes en argument de l'appel de ta méthodeInitAvionComp
Il y a de forte chance que ce soitAeroport aero
qui soit null
-
j'ai essayer plusieurs truc et sa ne marche pas, je vais vous donner le code en entier :
public class HomeAeroport {
static class Aeroport{
String nomAeroport;
String adresseAeroport;
CompagnieAerienne[] tabCompaAer=new CompagnieAerienne[2];
HangAvionCompAer[] HangAvion=new HangAvionCompAer[2];
}
static class CompagnieAerienne{
String nomCompAer;
int nbrAvionAloue;
}
static class HangAvionCompAer{
int numHangar;
AvionCompAer[] AvionComp = new AvionCompAer[2];
}
static class AvionCompAer{
int numAvion;
int nbrPlacesAvion;
String etatAvion;
String destAvion;
}
static void InitCompAer(Aeroport aero){
aero.nomAeroport="ROISSY";
aero.adresseAeroport="PARIS";
CompagnieAerienne CA1 = new CompagnieAerienne();
CA1.nbrAvionAloue=5;
CA1.nomCompAer="AIRBUS";
aero.tabCompaAer[0]=CA1;
CompagnieAerienne CA2 = new CompagnieAerienne();
CA2.nbrAvionAloue=7;
CA2.nomCompAer="BOEING";
aero.tabCompaAer[1]=CA2;
}
static void InitAvionComp(Aeroport aero){
AvionCompAer A1=new AvionCompAer();
A1.numAvion=1001;
A1.nbrPlacesAvion=200;
A1.etatAvion="GARAGE";
A1.destAvion="null";
aero.HangAvion[0].AvionComp[0]=A1;
AvionCompAer A2=new AvionCompAer();
A1.numAvion=1002;
A1.nbrPlacesAvion=200;
A1.etatAvion="GARAGE";
A1.destAvion="null";
aero.HangAvion[0].AvionComp[1]=A2;
AvionCompAer B1=new AvionCompAer();
A1.numAvion=2001;
A1.nbrPlacesAvion=200;
A1.etatAvion="GARAGE";
A1.destAvion="DISABLE";
aero.HangAvion[1].AvionComp[0]=B1;
AvionCompAer B2=new AvionCompAer();
A1.numAvion=2002;
A1.nbrPlacesAvion=200;
A1.etatAvion="GARAGE";
A1.destAvion="DISABLE";
aero.HangAvion[1].AvionComp[1]=B2;
}
/*static void AfficherAeroport(Aeroport aero){
for(int i=0;i<2;i++){
System.out.println(aero.tabCompaAer[i].nomCompAer);
System.out.println(aero.tabCompaAer[i].nbrAvionAloue);
for(int y=0;y<2;y++){
System.out.println(aero.tabCompaAer[i].HangAvion.AvionComp[y].numAvion);
System.out.println(aero.tabCompaAer[i].HangAvion.AvionComp[y].nbrPlacesAvion);
}
}
}
*/
public static void main(String[] args){
Aeroport aero = new Aeroport();
InitCompAer(aero);
InitAvionComp(aero);
System.out.println(aero.HangAvion[1].AvionComp[1].numAvion);
// AfficherAeroport(aero);
}
} -
si tu ajoutes juste avant ta ligne qui fait null pointer un
System.out.println(aero.HangAvion[0]);
tu verras qu'il est null. Il ne doit pas être initialisé.
Sinon pourquoi toutes tes classes sont en static ?
-
Je suis en BTS et on nous apprend comme sa ... voila ^^
-
C bon je vient de trouver la solution !
Merci à toi, et je met le code qui fonctionne :
public class HomeAeroport {
static class Aeroport{
String nomAeroport;
String adresseAeroport;
CompagnieAerienne[] tabCompaAer=new CompagnieAerienne[2];
HangAvionCompAer[] HangAvion=new HangAvionCompAer[2];
}
static class CompagnieAerienne{
String nomCompAer;
int nbrAvionAloue;
}
static class HangAvionCompAer{
int numHangAvion;
AvionCompAer[] AvionComp = new AvionCompAer[2];
}
static class AvionCompAer{
int numAvion;
int nbrPlacesAvion;
String etatAvion;
String destAvion;
}
static void InitCompAer(Aeroport aero){
aero.nomAeroport="ROISSY";
aero.adresseAeroport="PARIS";
CompagnieAerienne CA1 = new CompagnieAerienne();
CA1.nbrAvionAloue=5;
CA1.nomCompAer="AIRBUS";
aero.tabCompaAer[0]=CA1;
CompagnieAerienne CA2 = new CompagnieAerienne();
CA2.nbrAvionAloue=7;
CA2.nomCompAer="BOEING";
aero.tabCompaAer[1]=CA2;
}
static void InitAvionComp(Aeroport aero){
HangAvionCompAer H1 = new HangAvionCompAer();
H1.numHangAvion=1;
aero.HangAvion[0]=H1;
HangAvionCompAer H2 = new HangAvionCompAer();
H2.numHangAvion=2;
aero.HangAvion[1]=H2;
AvionCompAer A1=new AvionCompAer();
A1.numAvion=1001;
A1.nbrPlacesAvion=200;
A1.etatAvion="GARAGE";
A1.destAvion="null";
aero.HangAvion[0].AvionComp[0]=A1;
AvionCompAer A2=new AvionCompAer();
A2.numAvion=1002;
A2.nbrPlacesAvion=200;
A2.etatAvion="GARAGE";
A2.destAvion="null";
aero.HangAvion[0].AvionComp[1]=A2;
AvionCompAer B1=new AvionCompAer();
B1.numAvion=2001;
B1.nbrPlacesAvion=400;
B1.etatAvion="GARAGE";
B1.destAvion="DISABLE";
aero.HangAvion[1].AvionComp[0]=B1;
AvionCompAer B2=new AvionCompAer();
B2.numAvion=2002;
B2.nbrPlacesAvion=400;
B2.etatAvion="GARAGE";
B2.destAvion="DISABLE";
aero.HangAvion[1].AvionComp[1]=B2;
}
static void AfficherAeroport(Aeroport aero){
System.out.println("----------------"+aero.nomAeroport+"----------------");
System.out.println("");
System.out.println("Adresse de L'Aeroport : "+aero.adresseAeroport);
System.out.println("");
for(int i=0;i<2;i++){
System.out.println("Nom Compagnie Aerienne : "+aero.tabCompaAer[i].nomCompAer);
System.out.println("Nombres d'avion aloué : "+aero.tabCompaAer[i].nbrAvionAloue);
System.out.println("Numéro de l'hangar : "+aero.HangAvion[i].numHangAvion);
System.out.println("");
for(int y=0;y<2;y++){
System.out.println("Numéro de l'avion : "+aero.HangAvion[i].AvionComp[y].numAvion);
System.out.println("Nombres de place de l'avion : "+aero.HangAvion[i].AvionComp[y].nbrPlacesAvion);
System.out.println("Etat de l'avion "+aero.HangAvion[i].AvionComp[y].etatAvion);
System.out.println("Destination de l'avion : "+aero.HangAvion[i].AvionComp[y].destAvion);
System.out.println("");
}
System.out.println("--------------------------------");
}
}
public static void main(String[] args){
Aeroport aero = new Aeroport();
InitCompAer(aero);
InitAvionComp(aero);
AfficherAeroport(aero);
}
}