从java中的单独类访问实例变量

时间:2017-06-22 15:57:28

标签: java

我正在javafx中编写自己的tic tac toe游戏,但似乎偶然发现了一些我在处理类时不理解的基本机制。我试图简化这个问题的问题。我只想创建一个包含二维字符串数组的Game对象,然后通过另一个类'方法打印出该数组中的字符串。我运行此代码时出现空指针异常。任何帮助将不胜感激。欢呼声。

package testing;

import javafx.application.Application;
import javafx.stage.Stage;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) {
        Game g = new Game();
        g.addMove("X", 1, 0);
        g.addMove("O", 0, 1);
        GUI.printBoard(g);
    }

    public static void main(String[] args) {
        launch(args);
    }
}


package testing;

public class Game {
    private String[][] board;

    public Game() {
        this.board = new String[3][3];
    }

    public String[][] getBoard() {
        return this.board;
    }

    public void addMove(String s, int row, int col) {
        this.board[row][col] = s;
    }  
}


package testing;

public class GUI {

    public static void printBoard(Game g) {
        String[][] board = g.getBoard();

        for (int row = 0; row < 3; row++) {
            for (int col = 0; col < 3; col++) {
                if (board[row][col].equals("X"))
                    System.out.println(board[row][col]);
                else
                    if (board[row][col].equals("O"))
                        System.out.println(board[row][col]);
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您只为数组的条目[1],[0]和[0],[1]分配了一个值。由于您的数组是3乘3,其余值仍将被指定为null。当您打印出数组的值时,您也在迭代空值。因此,如果您要尝试比较&#34; X&#34; to null,生成NullPointerException。