2013-08-18 90 views
1

該代碼的目的是從枚舉Mark中獲取值colour。我將參數枚舉項,行號,列號傳遞給Board類中的setCell方法。在井字遊戲中拋出異常

此過程應改變所選單元格的顏色。

我得到這個異常:

Exception in thread "main" java.lang.NullPointerException 
at games.BoardGameTester.main(BoardGameTester.java:17) 

on line gb1.setCell(Mark.ORANGE,0,1); 

這裏是主類:

public class BoardGameTester { 

private static Board gb; 
private static Board gb1; 

public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    System.out.println("3*3 board for a tic tac toe game"); 
    gb = new Board(3, 3); 
    System.out.println(gb.toString()); 



    gb1.setCell(Mark.ORANGE,0,1); 
} 

} 

這裏是第二類:

public class Board { 

private Cell[][] cells; 
public Board(int rows, int columns) { 
cells = new Cell[rows][columns]; 
for(int r = 0; r < cells[0].length; r++) { 
for (int c = 0; c < cells[1].length; c++) { 
cells[r][c] = new Cell(r,c); 
} 
} 
} 
public Cell setCell(Mark mark, int row, int column) throws 
IllegalArgumentException { 
if (cells[row][column].getContent() == Mark.EMPTY) 
cells[row][column].setContent(mark); 

else throw new IllegalArgumentException("Player already there!"); 
return cells[row][column]; 
} 
public Cell getCell(int row, int column) { 
return cells[row][column]; 
} 
public String toString() { 
StringBuilder str = new StringBuilder(); 
for(int r = 0; r < cells.length; r++) { 
str.append("|"); 


for (int c = 0; c < cells[r].length; c++) { 
switch(cells[r][c].getContent()) { 
case NOUGHT: 
    str.append("O"); 
    break; 
    case CROSS: 
    str.append("X"); 
    break; 
    case YELLOW: 
    str.append("Y"); 
    break; 
    case RED: 
    str.append("R"); 
    break; 
    case BLUE: 
    str.append("B"); 
    break; 
    case GREEN: 
    str.append("G"); 
    break; 
    case MAGENTA: 
    str.append("M"); 
    break; 
    case ORANGE: 
    str.append("M"); 
    break; 
    default: //Empty 
    str.append(""); 
    } 
    str.append("|"); 
    } 
    str.append("\n"); 
    } 
    return str.toString(); 

} 
} 

這裏是枚舉類:

public enum Mark { 

EMPTY, NOUGHT, CROSS, YELLOW, RED, BLUE, GREEN, MAGENTA, ORANGE 
} 

回答

4

我沒有看到任何代碼可能會將gb1設置爲除null以外的值。也許你的意思是gb?如果是這樣,請刪除gb1變量並使用gb代替。