JAVA - Tableau de type reference

Résolu/Fermé
Signaler
Messages postés
2
Date d'inscription
samedi 21 mars 2009
Statut
Membre
Dernière intervention
22 mars 2009
-
Messages postés
2
Date d'inscription
samedi 21 mars 2009
Statut
Membre
Dernière intervention
22 mars 2009
-
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.

4 réponses

Messages postés
191
Date d'inscription
vendredi 19 mai 2006
Statut
Membre
Dernière intervention
21 juillet 2010
36
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41989 internautes nous ont dit merci ce mois-ci

Messages postés
2
Date d'inscription
samedi 21 mars 2009
Statut
Membre
Dernière intervention
22 mars 2009
1
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..
Messages postés
7
Date d'inscription
samedi 21 mars 2009
Statut
Membre
Dernière intervention
22 mars 2009

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*/

}
}
Messages postés
7
Date d'inscription
samedi 21 mars 2009
Statut
Membre
Dernière intervention
22 mars 2009

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