[Java] java.lang.NullPointerException

Résolu
Bonjour,
je voudrais savoir quel est le probleme d'un java.lang.NullPointerException ? si vous voulez je peut ecrire le code..



--
_______________________________________________________________________
A tous c'est Le_mazo

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. 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
    1. 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
      1. Modérateur
        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]);
        }
        1. 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
          1. Modérateur
            Si tu écris a.b il faut que a!=null.
            En particulier tout objet doit être initialisé avant d'être utilisé.