[Java] java.lang.NullPointerException

Résolu/Fermé
Le_mazo Messages postés 215 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 22 mai 2014 - 19 janv. 2011 à 20:31
Le_mazo Messages postés 215 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 22 mai 2014 - 19 janv. 2011 à 21:40
Bonjour,
je voudrais savoir quel est le probleme d'un java.lang.NullPointerException ? si vous voulez je peut ecrire le code..




A voir également:

5 réponses

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
19 janv. 2011 à 20:48
Si tu écris a.b il faut que a!=null.
En particulier tout objet doit être initialisé avant d'être utilisé.
0
Le_mazo Messages postés 215 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 22 mai 2014 52
19 janv. 2011 à 20:56
salut merci de repondre regarde
c'est le jeu snake et j'ai du mal
L'erreur est dans deplacerS (il y a un commentaire):


import iut.algo.*;

public class Metier
{
int nbLig;
int nbCol;
char[][] grille;
Element serpent;
int p;
Element[] anneaux;
int cptAnneaux;
int nbElt;

public Metier(){
grille = new char[][] { { 'X','X','X','X',' ',' ',' ','X','X','X','X' },
{ 'X',' ',' ',' ',' ',' ',' ',' ',' ',' ','X' },
{ 'X',' ',' ',' ',' ',' ',' ',' ',' ',' ','X' },
{ 'X','X','X',' ',' ','*',' ',' ','X','X','X' },
{ ' ','*',' ',' ',' ',' ',' ',' ',' ',' ',' ' },
{ ' ',' ',' ',' ',' ','S','*',' ',' ',' ',' ' },
{ ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ' },
{ 'X','X','X',' ',' ',' ',' ',' ','X','X','X' },
{ 'X',' ',' ',' ',' ',' ',' ',' ',' ',' ','X' },
{ 'X',' ',' ','*',' ',' ','*',' ',' ',' ','X' },
{ 'X','X','X','X',' ',' ',' ','X','X','X','X' }};

nbLig = grille.length;
nbCol = grille[0].length;
serpent = new Element (5 ,5);
anneaux = new Element[100];
initSerpent();
}

public void initSerpent(){
anneaux[0] = new Element (5 ,5);
anneaux[1] = new Element (6, 5);
anneaux[2] = new Element (7, 5);
}

public boolean deplacer( char c )
{
Element s;

if ( c == 'N' || c == 'n' )
{
if (serpent.getLig() == 0)
{
if ( mur ( (serpent.getLig() + nbLig - 1), serpent.getCol()))
{
return false;
}
else
{
s = serpent;
serpent = new Element( (s.getLig() + nbLig - 1),s.getCol());
deplacerS ( serpent, c );

return true;
}
}
else
{
if ( mur ( (serpent.getLig() - 1), serpent.getCol()))
{
return false;
}
else
{
s = serpent;
serpent = new Element( (s.getLig() - 1),s.getCol());
deplacerS ( serpent, c );
return true;
}
}
}
else
{
if ( c == 'S' || c == 's' )
{
if (serpent.getLig() == nbLig - 1 )
{
if ( mur ( (serpent.getLig() - nbLig + 1), serpent.getCol()))
{
return false;
}
else
{
s = serpent;
serpent = new Element( (s.getLig() - nbLig + 1),s.getCol());
deplacerS ( serpent, c );
return true;
}
}
else
{
if ( mur ( (serpent.getLig() + 1), serpent.getCol()))
{
return false;
}
else
{
s = serpent;
serpent = new Element( (s.getLig() + 1),s.getCol());
deplacerS ( serpent, c );
return true;
}
}
}
else
{
if ( c == 'O' || c == 'o' )
{
if (serpent.getCol() == 0)
{
if ( mur ( serpent.getLig(), (serpent.getCol() + nbCol - 1)))
{
return false;
}
else
{
s = serpent;
serpent = new Element( s.getLig(), (s.getCol()+ nbCol - 1));
deplacerS ( serpent, c );
return true;
}
}
else
{
if ( mur ( serpent.getLig(), (serpent.getCol() - 1)))
{
return false;
}
else
{
s = serpent;
serpent = new Element(s.getLig(), (s.getCol() - 1));
deplacerS ( serpent, c );
return true;
}
}
}
else
{
if ( c == 'E' || c == 'e' )
{
if (serpent.getCol() == nbCol - 1 )
{
if ( mur ( serpent.getLig() , (serpent.getCol()- nbCol + 1)))
{
return false;
}
else
{
s = serpent;
serpent = new Element( s.getLig() ,(s.getCol() - nbCol + 1));
deplacerS ( serpent, c );
return true;
}
}
else
{
if ( mur ( serpent.getLig(), (serpent.getCol() + 1)))
{
return false;
}
else
{
s = serpent;
serpent = new Element( s.getLig(), (s.getCol() + 1));
deplacerS ( serpent, c );
return true;
}
}
}
}
}
}
return false;
}

public boolean mur( int lig, int col){
if ( grille[lig][col] == 'X' )
{
return true;
}
else
{
return false;
}
}

public String toString(){
String a = "";
for (int lig=0; lig<grille.length ; lig++ )
{
for (int col=0; col<grille[0].length ; col++ )
{
a += "" + grille[lig][col] + "";
}
a += "\n";
}
return a;
}

public int compteurPastille (){
p = 0;
for(int cpt = 0; cpt < nbLig; cpt++){
for(int cpt2 = 0; cpt2 < nbCol; cpt2++){
if ( grille[cpt][cpt2] == '*') { p++; }
}
}
return p;
}

public int compteurPastilleInit () {
p = 0;
for(int cpt = 0; cpt < nbLig; cpt++){
for(int cpt2 = 0; cpt2 < nbCol; cpt2++){
if ( grille[cpt][cpt2] == '*') { p++; }
}
}
nbElt = p;
return p;
}

public void deplacerS( Element serpent, char c ) {

Element tmp1;
Element tmp2;
char car =c;
tmp1 = serpent ;
tmp2 = anneaux[nbElt - 1];
for (int cpt = nbElt - 1; cpt > 0; cpt--){
anneaux[cpt] = anneaux[cpt-1];
grille[anneaux[cpt].getLig()][anneaux[cpt].getCol()] = 'o'; // L'erreur est ici
}
anneaux[0] = tmp1;
grille[tmp1.getLig()][tmp1.getCol()] = 'S';
grille[tmp2.getLig()][tmp2.getCol()] = ' ';
agrandirQueue ( car );
}

public boolean mangerPastille( char c){
switch ( c ){
case 'n' : if(grille[(serpent.getLig() - 1)][serpent.getCol()]== '*') { return true ; }
else { return false; }
case 's' : if(grille[(serpent.getLig() + 1)][serpent.getCol()]== '*') { return true ; }
else { return false; }
case 'o' : if(grille[(serpent.getLig())][serpent.getCol() - 1]== '*') { return true ; }
else { return false; }
case 'e' : if(grille[(serpent.getLig())][serpent.getCol() + 1]== '*') { return true ; }
else { return false; }
}
return false;
}

/*public void agrandirQueue( char c){
if ( mangerPastille( c )){
anneaux[nbElt] = new Element( anneaux[nbElt - 1].getLig(), anneaux[nbElt - 1].getCol() );
nbElt++;
}
}*/

public boolean partieFini ( ) {

boolean mordu = false;
for (int cpt = nbElt; cpt > 0; cpt--){
mordu = (anneaux[0] == anneaux[cpt]);
if( mordu ){
System.out.println ( "HAHAHA, vous avez PERDU !!!"); return true;
}
if( p == 0 ) { System.out.println ( "Bravo, vous avez GAGNE !!!"); return true; }
else { return false; }
}
return false;
}
}
_______________________________________________________________________
A tous c'est Le_mazo
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
19 janv. 2011 à 21:14
Je ne peux pas tester car il me manque la classe Element, la méthode agrandirQueue et la méthode main.

Cependant si l'erreur est sur cette ligne ci :
grille[anneaux[cpt].getLig()][anneaux[cpt].getCol()] = 'o';
Cela signifie que anneaux[cpt]==null.

Modifie cette ligne avec le code suivant, et dis moi ce que le message d'erreur affiche.
try{
  grille[anneaux[cpt].getLig()][anneaux[cpt].getCol()] = 'o'; 
}catch(NullPointerException e){
    e.printStackTrace();
    System.err.println("nbElt = "+nbElt+"\tanneaux.length = "+anneaux.length);
    System.err.println("cpt = "+cpt+"\tanneaux[cpt] = "+anneaux[cpt]);
}
0
Le_mazo Messages postés 215 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 22 mai 2014 52
19 janv. 2011 à 21:38
voici le message d'erreur:

java.lang.NullPointerException
____at Metier.deplacerS(Metier.java:236)
____at Metier.deplacer(Metier.java:71)
____at Controleur.main(Controleur.java:61)
nbElt = 5____________anneau.length = 100
cpt = 4 _____________anneaux[cpt] = null
java.lang.NullPointerException
____at Metier.deplacerS(Metier.java:245)
____at Metier.deplacer(Metier.java:71)
____at Controleur.main(Controleur.java:61)
________________________________________________________________
A tous c'est Le_mazo
0

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

Posez votre question
Le_mazo Messages postés 215 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 22 mai 2014 52
19 janv. 2011 à 21:40
KX je tiens a te remercier car l'erreur etait en fait nbElt qui etait trop grand car je le l'avait pas initialiser au bon endrois

merci beaucoup pour ton aide qui m'a ete precieuse.
________________________________________________________________
A tous c'est Le_mazo
0