JAVA - Tableau de type reference

Résolu/Fermé
bboul Messages postés 2 Date d'inscription samedi 21 mars 2009 Statut Membre Dernière intervention 22 mars 2009 - 21 mars 2009 à 15:07
bboul Messages postés 2 Date d'inscription samedi 21 mars 2009 Statut Membre Dernière intervention 22 mars 2009 - 22 mars 2009 à 00:18
Bonjour,

- J'ai crée un type Player qui possède differentes variable.
- Ensuite, j'ai crée dans un programme un tableau de type Player, seulement, quand j'essaye d'affecter une valeur à ce tableau (pour l'initialiser), j'ai l'erreur :
"Exception in thread "main" java.lang.NullPointerException"

- voici la déclaration du type (situé dans un fichier Player.java)
public class Player{
	String nom;
	char pion;
	int[] box;
	boolean liberte;
	int score;
	boolean prison;
}


- J'ai fait un programme simplifié pour vous présenter le problème:
Ce programme est situé dans un fichier essai.java situé dans le meme dossier que Player.java

public class essai{
	public static void main(String[] args){
		Player[] tab=new Player[1];
		tab[0].nom="cool";
		System.out.print(tab[0].nom);
	}
}


Le message apparait lorsque le programme arrive à la ligne:
		tab[0].nom="cool";

Je ne comprend pas comment je peus initialiser le tableau, si il me demande qu'il le soit avant de le faire...
Je vous remercie de m'aider. J'ai chercher un peu partout, mais aucune réponse sur ce problème.
A voir également:

4 réponses

UaLShark Messages postés 191 Date d'inscription vendredi 19 mai 2006 Statut Membre Dernière intervention 21 juillet 2010 35
21 mars 2009 à 23:45
public class essai{
public static void main(String[] args){
Player[] tab=new Player[1]; // là tu initilises le tableau ok !
tab[0].nom="cool"; // là tu accedes au premier element de type player Erreur (non initialisé) *
System.out.print(tab[0].nom);
}
}

Dans ton code tu essaie de modifier l'attribut du premier element de tableau qui est de type player mais non instancié
ajoute avant pour chaque element de tableau tab[i] = new Player();
2
bboul Messages postés 2 Date d'inscription samedi 21 mars 2009 Statut Membre Dernière intervention 22 mars 2009 1
22 mars 2009 à 00:18
merci beaucoup pour ces explications.
je comprenais qu'il y avait un problème d'initialisation, mais je voyais pas comment faire. encore merci. Maintenant ca marche tres bien..
1
ait_fattoul_hakam Messages postés 7 Date d'inscription samedi 21 mars 2009 Statut Membre Dernière intervention 22 mars 2009
21 mars 2009 à 23:45
attention

la class plyer doit avoir au moin un constructeur pour inistalise les variable .
ex:
public class Player{
String nom;
char pion;
int[] box;
boolean liberte;
int score;
boolean prison;
public Player(String arg)
{
this.nom = arg;
}
public Player(char arg)
{
this.pion = arg;
}
public Player(int[] arg)
{
fro(int i =0; i<arg.length ; i++ )
{
box[i]= arg[i];
}
}
public Player(init arg)
{
this.score = arg;
}
public Player(boolean arg)
{

this.liberte = arg
}
public Player(boolean arg)
{
this.prison= arg
}
public String setNom()// il faut le faire pour chaque attribut
{
return nom;
}

}

comme ca vous fini le premier class
alor en pase au deuxieme

public class essai{
public static void main(String[] args){
Player[] tab=new Player[1];

tab[0].nom=new Player("cool");// pour crre les objet plyer
tab[0].nom=new Player("Midelt");
System.out.print(tab[0].nom); /*pour aficher il faut utilse les seter pour char attribut de la classe plyer ok*/

}
}
0
ait_fattoul_hakam Messages postés 7 Date d'inscription samedi 21 mars 2009 Statut Membre Dernière intervention 22 mars 2009
22 mars 2009 à 00:11
alors
pour declare un table d'un class
en utilise

Nom_Class [] nomTableau ;

lors que en efectue .

nomTableau = Nom_Class[5];
/ celement en defini la taille de tableaux mes les objet (les composant ) de tableaux n'est pas en core creer il faut a chaque utilisation d 'un composant de ce tableau crrer l'objet /
alor on doit creer l 'element 0 pour l'utilise
nomTableau [0]=new Nom_Class(); en peut l'inistalise ou non
et ensi de suite
pour chaque objet il doit creer avent d'utilise
ok merci pour voter attention
0