[Java] java.lang.NullPointerException

Résolu
Le_mazo Messages postés 233 Statut Membre -  
Le_mazo Messages postés 233 Statut Membre -
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

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Si tu écris a.b il faut que a!=null.
    En particulier tout objet doit être initialisé avant d'être utilisé.
    0
  2. Le_mazo Messages postés 233 Statut Membre 53
     
    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
  3. KX Messages postés 19031 Statut Modérateur 3 020
     
    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
  4. Le_mazo Messages postés 233 Statut Membre 53
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Le_mazo Messages postés 233 Statut Membre 53
     
    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