Souci programme en JAVA

Résolu
Reisors Messages postés 164 Statut Membre -  
Reisors Messages postés 164 Statut Membre -
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;

}

5 réponses

  1. arthurc Messages postés 27 Statut Membre 4
     
    Salut,

    Quel est la valeur de aero que tu passes en argument de l'appel de ta méthode
    InitAvionComp

    Il y a de forte chance que ce soit
    Aeroport aero
    qui soit null
    0
  2. Reisors Messages postés 164 Statut Membre 14
     
    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);

    }
    }
    0
  3. arthurc Messages postés 27 Statut Membre 4
     
    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 ?

    0
  4. Reisors Messages postés 164 Statut Membre 14
     
    Je suis en BTS et on nous apprend comme sa ... voila ^^
    0
    1. Reisors Messages postés 164 Statut Membre 14
       
      Oui c'est exact il est null, comment faire pour l'initialiser ?
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Reisors Messages postés 164 Statut Membre 14
     
    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);

    }
    }
    0