Exception que je ne comprend pas la source ...

Résolu
miblack Messages postés 6 Date d'inscription mardi 21 septembre 2010 Statut Membre Dernière intervention 7 juin 2011 - 7 juin 2011 à 19:38
 Utilisateur anonyme - 7 juin 2011 à 21:46
/**
*
* @param gr La grille qu'on veux initialiser (de taille n*n)
* @param n nombre de boules dans 1 coté
*/

public void initialisationGrilleValeurQuart(Grille gr, Integer n) {
float nbCasetemporaire = n * n;
int val = 1;
int i = 0;
int coll = 0;
int ligne = 0;

if (n <= 5) {
System.out.println("Erreur : Initialisation a 6");
n = 6;
nbCasetemporaire = 6 * 6;

}

while (Math.round(nbCasetemporaire) >=1) {

for (int j = 0; j < Math.round(nbCasetemporaire / 4); j++) {
lesCases[i] = new Case(val, null, new Position(ligne, coll));
i = i + 1;
coll = coll + 1;
if (coll >= n)
{
coll = 0;
ligne++;
}
}
val++;
nbCasetemporaire = nbCasetemporaire - nbCasetemporaire / 4;
}
}
/* affichage + exception
Coup n 0 (2)
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8
--------------------------------------------
| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| 1 | 1 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
| 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 3 |
| 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 |
| 3 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 |
| 4 | 5 | 5 | 5 | 5 | 5 | 5 | 6 | 6 |
| 6 | 6 | 6 | 7 | 7 | 7 | 7 | 8 | 8 |
| 8 | 9 | 9 | 10 | 10 | 11 | 12 | 13Exception in thread "main" java.lang.NullPointerException
at modeTexte.Affichage.affichage(Affichage.java:27)
at modele.Joueur.JouerHumain(Joueur.java:65)
at modele.Partie.jeu(Partie.java:75)
at modeTexte.Main.main(Main.java:48)
*/

5 réponses

cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 11
7 juin 2011 à 20:23
salut,

a priorie ton gr.getLesCases()[81] est null ... mais comme on ne voit pas sont initialisation, on ne peut confirmer... ;o) il est probable que tu n'initialises pas la derniere valeur de ton tableau...
ceci dit pourquoi n utilises tu pas un tableau à 2 dimentions, cela serai plus lisible non??

PS : réserves les variables d'une lettre pour les boucles ;o) c'est plus clair...

GodConan ;o)
3
miblack Messages postés 6 Date d'inscription mardi 21 septembre 2010 Statut Membre Dernière intervention 7 juin 2011
7 juin 2011 à 19:40
Si j'oublie une des 2 méthodes ...

/**
*
* @param gr La grille qu'on veux afficher (de taille n*n)
* @param n nombre de boules dans 1 coté
*/
public static void affichage(Grille gr, Integer n) {
for (int i = 0; i < n; i++) {
System.out.print(" | " + i + "");
}
System.out.print("\n --------------------------------------------\n");

for (int i = 0; i < gr.getLesCases().length; i++) {
if (i % n == 0 && i != 0) {
System.out.print(" |\n");
}

if (gr.getLesCases()[i].getJouePar() == null) {
System.out.print(" | " + gr.getLesCases()[i].getValeur());
} else {
System.out.print(" | ");
}

}
System.out.print(" | \n");
System.out.print(" --------------------------------------------\n");

}

Merci de l'aide qu'on peux m'apporter ... Car ça me tue :x
0
miblack Messages postés 6 Date d'inscription mardi 21 septembre 2010 Statut Membre Dernière intervention 7 juin 2011
7 juin 2011 à 21:12
Problème résolu merci quand même :)
0
miblack Messages postés 6 Date d'inscription mardi 21 septembre 2010 Statut Membre Dernière intervention 7 juin 2011
7 juin 2011 à 21:13
En fait lesCases[80] ne s'initialisais pas a cause d'une erreur dans la condition du for

Voila le code qui fonctionne :

/**
*
* @param gr
* La grille qu'on veux initialiser (de taille n*n)
* @param n
* nombre de boules dans 1 coté
*/

public void initialisationGrilleValeurQuart(Grille gr, Integer n) {
float nbCasetemporaire = n * n;
int val = 1;
int i = 0;
int coll = 0;
int ligne = 0;

if (n <= 5) {
System.out.println("Erreur : Initialisation a 6");
n = 6;
nbCasetemporaire = 6 * 6;

}

while (Math.round(nbCasetemporaire) >= 1 ) {

for (int j = 0; (j <= Math.round(nbCasetemporaire / 4) && i<n*n);j++) {
lesCases[i] = new Case(val, null, new Position(ligne, coll));
i = i + 1;
coll = coll + 1;
if (coll >= n && ligne != n + 1) {
coll = 0;
ligne++;
}
}
val++;
nbCasetemporaire = nbCasetemporaire - nbCasetemporaire / 4;
}
}
0

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

Posez votre question
Utilisateur anonyme
7 juin 2011 à 21:46
Utilise stp le bouton Réponse acceptée pour marquer le sujet comme résolu.
Et pense à utiliser les balises pour le code la prochaine fois.


--
Pylouq (actuellement jongleur de clavier AZERTY et de clavier QWERTZ)
0
Rejoignez-nous