java - 井字游戏抛出异常

标签 java nullpointerexception tic-tac-toe

这段代码的目的是从枚举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
}

最佳答案

我在任何地方都没有看到任何代码可以将 gb1 设置为 null 以外的值。也许您的意思是 gb?如果是这样,请删除 gb1 变量并改用 gb

关于java - 井字游戏抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18304715/

相关文章:

java - 向 jbutton 添加 Action 监听器

java - instanceof vs equals on defined string that identifies the Class

android - Fragment 的 oncreateView() 中的 NullPointerException

java - Tic Tac Toe 的 Minimax 算法中的错误

c++ - 检查二维 vector 的每个元素是否匹配

java - Axis:记录 SOAP http 请求和响应

java - 安全 AJP 连接器不呈现

c# - 可选的设计模式,优势

java - Android 上导致 NPE 的 runOnUiThread 和 sendKeys 调用序列

c++ - Negamax 实现似乎不适用于井字游戏