Besoin d'aide programme etudiants, assez simple

The Waxy Man Messages postés 26 Date d'inscription lundi 24 septembre 2001 Statut Membre Dernière intervention 6 novembre 2003 - 22 oct. 2002 à 15:03
The Waxy Man Messages postés 26 Date d'inscription lundi 24 septembre 2001 Statut Membre Dernière intervention 6 novembre 2003 - 23 oct. 2002 à 11:04
J'ai re-besoin d'aide !!!

ERREUR:
C:\jdk1.3\bin\javaw.exe -classpath "C:\jdk1.3\jre\lib\rt.jar;C:\DATA\2ti\Eleves\Englebert" Englebert
java.lang.NullPointerException
at Englebert.main(Englebert.java:49)
Exception in thread "main" Finished executing

PROG:

/*Réaliser un prog,
1. on peut choisir une école -> menu Suivant
2. on peut ajouter un etudiant MAX 100 ETU / école
3. ajouter des résultats à un étudiant
4. calculer une moyenne d'un etudiant
5. on peut afficher tout les étudiant avec ou sans leurs résultats.
*/

class Etudiant
{
String nom, prenom;
int num;
int nb_eleves;

Etudiant() {
System.out.println("Entrez le nombre l'eleves que vous souhaitez enter:/n> ");
nb_eleves=Clavier.lireInt();
Etudiant[] et= new Etudiant[nb_eleves];
for (int i=0; i<nb_eleves; i++)
{
et[i] = new Etudiant();
System.out.println("Nom: ");
et[i].nom=Clavier.lireString();
System.out.println("Prenom: ");
et[i].prenom=Clavier.lireString();
System.out.println("Numero: ");
et[i].num=Clavier.lireInt();
}
}
}

class Ecole
{
String nom;
Etudiant[] tab_etu=new Etudiant[100];
Ecole() {System.out.println("Ecole: 1/2/3?");} //constructeur
}

public class Englebert
{
public static void main (String [] args)
{
int ecole_temp;
int nb_eleves;
int choix=1;

Ecole[] nom_ecoles= new Ecole[3];
nom_ecoles[0].nom="EPHEC LLN";
nom_ecoles[1].nom="EPHEC BRUXELLES";
nom_ecoles[2].nom="EPHEC BRUXELLES2";

// Menu pour choisir une école
System.out.println("Bienvenue sur GestStud 1.0");
System.out.println("Veuillez choisir une école:/n");
System.out.println("Ecole n° 1: "+nom_ecoles[0].nom);
System.out.println("Ecole n° 2: "+nom_ecoles[1].nom);
System.out.println("Ecole n° 3: "+nom_ecoles[2].nom+"/n/n/n> ");
ecole_temp = Clavier.lireInt();

// Menu pour faire des actions
while (choix != 0);
{
System.out.println("Bienvenue sur GestStud 1.0");
System.out.println("Pour entrer de nouveaux eleves tappez : 1");
System.out.println("Pour ajouter les résultats tappez : 2");
System.out.println("Pour tout afficher tappez : 3");
System.out.println("Pour quittez tappez : 0/n/n/n> ");

choix = Clavier.lireInt();

switch (choix) {
case 1 : break;
case 2 : //System.out.println("/nNom: "+this.nom+"\nPrenom: "+this.prenom+"\nNumero: "+this.num+"\nNom ecole: "+this.ecoles+"/n*****"); break;
case 3 : break;
}
}
}
}

2 réponses

willowman Messages postés 143 Date d'inscription vendredi 5 juillet 2002 Statut Membre Dernière intervention 18 mars 2006 1
23 oct. 2002 à 01:30
Salut !

A la ligne 40 tu veux initialiser un attribut (nom) appartenant à une instance de l'objet Ecole, alors que cette derniére n'a pas ete instanciée !

Tu fais bien :
Ecole[] nom_ecoles= new Ecole[3];
Ce qui te crée bien un tableau d'objet Ecole, mais chaque element de ton tableau doit etre construit !

Il faut donc faire :
Ecole[] nom_ecoles= new Ecole[3];

nom_ecoles[0] = new Ecole();
nom_ecoles[0].nom="EPHEC LLN";

nom_ecoles[1] = new Ecole();
nom_ecoles[1].nom="EPHEC BRUXELLES";

ect...

Toutefois, cet oubli est assez frequent lorsque l'on utilise des tableaux d'objets. Dans ce cas, chaque element est initialisé et pointe sur "null", d'ou l'erreur ensuite du java.lang.NullPointerException !!

A pluche.
0
The Waxy Man Messages postés 26 Date d'inscription lundi 24 septembre 2001 Statut Membre Dernière intervention 6 novembre 2003
23 oct. 2002 à 11:04
Merci ... c'est sympa ! ;-)

A pluche comme tu dis :-D
0