tic tac toe - tic tac toe game java -


i novice java student, assigned tic tac toe game. when try compile , run program, following error:

run: exception in thread "main" java.lang.nullpointerexception  @ tictactoegame.tictactoegame.displayboard(tictactoegame.java:55)  @ tictactoegame.tictactoegame.main(tictactoegame.java:23)  java result: 1 build successful (total time: 0 seconds) 

i warning in createboard method says "local variable hides field"

below code project far. of code provided me school, , suppose initialize array in createboard method , determine winner in winortie method. have ideas how run? doing wrong in initization of array? thank can me out this.

package tictactoegame;  import static tictactoegame.tictactoegame.gameboard;  public class tictactoegame {     static int[][] gameboard;    static final int empty = 0;    static final int nought = -1;       //this 'o'    static final int cross = 1;         //this 'x'     public static void main(string[] args) {       createboard(3,3);       int turn =0;       int playerval;       int outcome;        java.util.scanner scan = new java.util.scanner(system.in);        {          displayboard();          playerval = (turn % 2 == 0)? nought : cross;          if (playerval == nought) system.out.println("\n--o's turn--");          else system.out.println("\n--x's turn--");          system.out.print("enter row , column");           try {             set(playerval, scan.nextint(), scan.nextint());             } catch (exception ex) {system.err.println(ex);}          turn++;          outcome = winortie();       } while (outcome == -2);       displayboard();       switch (outcome){          case nought:             system.out.println("o wins!");             break;          case cross:             system.out.println("x wins!");             break;          case 0:             system.out.println("tie.");             break;       }    }     static void set(int val, int row, int col) throws       illegalargumentexception {       if (gameboard[row][col] == empty) gameboard[row][col] = val;       else throw new illegalargumentexception("player there!");    }       static void displayboard() {       for(int r=0; r < gameboard.length; r++) {          system.out.print("|");          for(int c=0; c < gameboard[r].length; c++) {             switch(gameboard [r][c]) {                case nought:                   system.out.print("o");                   break;                case cross:                   system.out.print("x");                   break;                default:            //empty                   system.out.print(" ");             }              system.out.print("|");           }           system.out.println("\n-----\n");                    }     }       static void createboard(int rows, int cols) {       int gameboard[][]=  new int[3][3];    }       static int winortie() {                   //nought wins horizontal        if (gameboard[0][0] == nought && gameboard[0][1] == nought && gameboard[0][2] == nought)          return nought;       else if (gameboard[1][0] == nought && gameboard[1][1] == nought && gameboard[1][2] == nought)          return nought;       else if (gameboard[2][0] == nought && gameboard[2][1] == nought && gameboard[2][2] == nought)          return nought;        //nought wins veritcal        else if (gameboard[0][0] == nought && gameboard[1][0] == nought && gameboard[2][0] == nought)          return nought;       else if (gameboard[0][1] == nought && gameboard[1][1] == nought && gameboard[2][1] == nought)          return nought;       else if (gameboard[0][2] == nought && gameboard[1][2] == nought && gameboard[2][2] == nought)          return nought;        //nought wins diagonal        else if (gameboard[0][0] == nought && gameboard[1][1] == nought && gameboard[2][2] == nought)          return nought;       else if (gameboard[0][2] == nought && gameboard[1][1] == nought && gameboard[2][0] == nought)          return nought;        //cross wins horizontal        else if (gameboard[0][0] == cross && gameboard[0][1] == cross && gameboard[0][2] == cross)          return cross;       else if (gameboard[1][0] == cross && gameboard[1][1] == cross && gameboard[1][2] == cross)          return cross;       else if (gameboard[2][0] == cross && gameboard[2][1] == cross && gameboard[2][2] == cross)          return cross;        //cross wins veritcal        else if (gameboard[0][0] == cross && gameboard[1][0] == cross && gameboard[2][0] == cross)          return cross;       else if (gameboard[0][1] == cross && gameboard[1][1] == cross && gameboard[2][1] == cross)          return cross;       else if (gameboard[0][2] == cross && gameboard[1][2] == cross && gameboard[2][2] == cross)          return cross;        //cross wins diagonal        else if (gameboard [0][0] == cross && gameboard[1][1] == cross && gameboard[2][2] == cross)          return cross;       else if (gameboard [0][2] == cross && gameboard[1][1] == cross && gameboard[2][0] == cross)          return cross;                      else          return -2;    } } 

your shadowing gameboard variable. when call createboard creating new, local variable , initialising it, leaves other createboard variable uninitialised.

 static void createboard(int rows, int cols) {      int gameboard[][]=  new int[3][3];  } 

try....

 static void createboard(int rows, int cols) {      gameboard =  new int[3][3];  } 

instead


Comments

Popular posts from this blog

php - Calling a template part from a post -

Firefox SVG shape not printing when it has stroke -

How to mention the localhost in android -