Java.lang.NullPointerException

psyckan Messages postés 135 Date d'inscription vendredi 27 août 2004 Statut Membre Dernière intervention 8 mai 2010 - 6 mai 2010 à 13:49
psyckan Messages postés 135 Date d'inscription vendredi 27 août 2004 Statut Membre Dernière intervention 8 mai 2010 - 8 mai 2010 à 07:17
Bonjour,

J'obtiens cette erreur lors de l'exécution de mon programme et je ne comprend pas pourquoi :

Exception in thread "main" java.lang.NullPointerException
at JeuCartes.creerJeu(JeuCartes.java:11)
at JeuCartesTest.main(JeuCartesTest.java:6)

Voici le code de la classe JeuCartes :

public class JeuCartes {

Carte [] JeuCartes;

public void creerJeu(int nombreCarte){
JeuCartes = new Carte[nombreCarte];
int couleur=1;
int valeurCarteInseree = 13;
for(int i=0;i<nombreCarte;i++){
JeuCartes[i].rang = valeurCarteInseree; // ERREUR
JeuCartes[i].couleur = couleur;
couleur++;
if(couleur==4){
couleur=1;
valeurCarteInseree--;
}
}
}
}

Voici le code de la classe JeuCartesTest :


public class JeuCartesTest {

public static void main(String[] args) {
JeuCartes j1 = new JeuCartes();
j1.creerJeu(32); // ERREUR
}

}

Et le code de la classe Carte :

public class Carte {
int rang,couleur;
static String [] tabCouleur = {"CARREAU","TREFLE","COEUR","PIQUE"};
static String [] tabRang = {"AS","DEUX","TROIS","QUATRE","CINQ","SIX","SEPT","HUIT","NEUF","DIX","VALET","DAME","ROI"};

}


Merci de votre aide

6 réponses

tototitanium Messages postés 13 Date d'inscription samedi 28 mars 2009 Statut Membre Dernière intervention 8 mai 2010 1
6 mai 2010 à 22:59
Bonjour,

Tu instancie ta classe (JeuCartes) alors qu'elle ne possède pas de constructeur...je me suis pas attardé sur ton code mais je pense que le problème viens simplement de là !
0
dvoraky Messages postés 744 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 9 mai 2010 8
7 mai 2010 à 14:56
Salut,
tototitanium, c'est faux, si aucun constructeur n'est renseigné, c'est le constructeur par défaut qui est pris, dans notre cas présent, ça serait :
public JeuCartes() {
}
C'est tout.

Ensuite, tu as créé un tableau de Carte... ok, mais les objets qui tu as à l'intérieur, il te faut les instancier aussi !!!
for(int i= 0;i<nombreCarte;i++){
JeuCartes[i] = new Carte();
JeuCartes[i].rang = valeurCarteInseree; // ERREUR
JeuCartes[i].couleur = couleur;
couleur++;
if(couleur==4){
couleur=1;
valeurCarteInseree--;
}
}
0
tototitanium Messages postés 13 Date d'inscription samedi 28 mars 2009 Statut Membre Dernière intervention 8 mai 2010 1
7 mai 2010 à 16:20
Salut dvoraky,

Donc tu veux me dire que même si aucun constructeur n'est présent sa passe... J'ai déjà sur-définit des constructeurs mais de la à ne pas écrire celui par défaut j'aurais jamais cru ! Je dois vraiment avoir besoin de revoir mes bases.


@+ et merci pour l'info
0
dvoraky Messages postés 744 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 9 mai 2010 8
7 mai 2010 à 16:26
En fait, si jamais UN constructeur a été écris du genre

public JeuCartes(int i) {
....
}
A ce moment là, il est interdit de faire appel à ça:
JeuCartes j = new JeuCartes();

Normal, quoi...

Par contre, dans ce que je disais, tu peux très bien imaginer une classe du style:

public class Test() {
public i;
}
et faire
Test t = new Test();
t.i = 18;

Tu vois?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tototitanium Messages postés 13 Date d'inscription samedi 28 mars 2009 Statut Membre Dernière intervention 8 mai 2010 1
7 mai 2010 à 16:33
Oké je comprends mieux, merci pour ce petit cours express !
0
psyckan Messages postés 135 Date d'inscription vendredi 27 août 2004 Statut Membre Dernière intervention 8 mai 2010
8 mai 2010 à 07:17
Merci pour vos réponse, c'était bien l'instanciation des cases qu'il manquait.
0
Rejoignez-nous