Forum Clubic

[java] simple exemple flou - ça se compile, ça ne s'éxecute pas !

Bonsoir, ci joint un code java qui se compile bien, mais ne s’execute pas !!

class Film{ 

  String intitule; 
  String realisateur; 

  public static void main(String [] args) 
  { 
    Film [] mesFilms = new Film[4]; 
    int i=0; 

    mesFilms[0].intitule="filma"; 
    mesFilms[1].intitule="filmb"; 
    mesFilms[2].intitule="filmc"; 
    mesFilms[3].intitule="filmd"; 
    mesFilms[0].realisateur="aaaa"; 
    mesFilms[1].realisateur="bbbb"; 
    mesFilms[2].realisateur="cccc"; 
    mesFilms[3].realisateur="dddd"; 


    while(i<4) 
    { 
      System.out.print(mesFilms[i].intitule); 
      System.out.print("par"); 
      System.out.print(mesFilms[i].realisateur); 
      i++; 
    } 
  } 
} 

Par quoi peut on corriger l’erreur à l’éxecution

 
 Exception in thread "main" java.lang.NullPointerException 
        at Film.main(Film.java:11)  

Merci

ptêt parce que le membre intitule de ta classe n’est pas initialisé ? (new String("…"))

Absolument pas…

Tout simplement, l’initialisation d’un tableau d’objets ne crée pas les objets (Si les objets étaient directement créés, quel constructeur devrait être appelé?)

mesFilms[0] = new Film();

Oui tout à fait, la première ligne :

Film [] mesFilms = new Film[4]; 

ne permet que la création du tableau intitulé mesFilm composé de 4 éléments de type ‘la classe Film’ sans désignation explicite de la nature de ces éléments.
Puis viennent en dessous les 4 instructions :


    mesFilms[0] = new Film();
    mesFilms[1] = new Film();
    mesFilms[2] = new Film();
    mesFilms[3] = new Film();

qui initialisent et créent explicitement 4 objets = les 4 éléments du tableau.
Je crois que j’ai un peu ‘compris’ comment ça se passe pour travailler avec un tableau d’objets.
Merci bcp…
a+