在java中从单独的类访问实例变量
我正在用javafx编写自己的tic-tac-toe游戏,但似乎偶然发现了一些我在处理类时不理解的基本机制。为了这个问题,我试图简化我的问题。我只想创建一个包含二维字符串数组的游戏对象,然后通过另一个类的方法打印该数组中的字符串。当我运行这段代码时,我得到一个空指针异常。任何帮助都将不胜感激。干杯在java中从单独的类访问实例变量,java,Java,我正在用javafx编写自己的tic-tac-toe游戏,但似乎偶然发现了一些我在处理类时不理解的基本机制。为了这个问题,我试图简化我的问题。我只想创建一个包含二维字符串数组的游戏对象,然后通过另一个类的方法打印该数组中的字符串。当我运行这段代码时,我得到一个空指针异常。任何帮助都将不胜感激。干杯 package testing; import javafx.application.Application; import javafx.stage.Stage; public class Ma
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]分配了一个值。由于数组是3乘3,其余的值仍将被赋值为null。当您打印出数组的值时,您也在对空值进行迭代。因此,在if中,您将尝试将X与null进行比较,这将生成一个NullPointerException。引发NullPointerException的位置在哪里?你能用堆栈输出更新它吗?这样我们就可以计算出确切的位置你还没有填充整个2d数组,留下的插槽内存从未初始化过,因此你在printBoardGame方法中得到空ptr异常,你可以尝试board[row][col].equals或board[row][col col].equalsX,干杯:打印板的功能应该是打印板中的内容,而不是打印其他内容。当我说assigned null时,您应该检查addMove函数中的有效输入,这有点错误。它们只是没有赋值,因此为空。所以它不是空的。