Java组合类调用报错:myGame.getBoard().displayBoard()执行异常
解决
myGame.getBoard().displayBoard()调用失败的问题 嘿,从你贴的代码片段来看,这个错误十有八九是空指针异常(NullPointerException)——说白了就是myGame.getBoard()返回了null,你再去调用null的displayBoard()方法,当然会出问题。
咱们一步步捋清楚问题和修复方案:
首先看你的Game类,你声明了private Board board;,但从给出的构造器片段来看,你没在构造器里给这个board变量赋值啊!Java里成员变量默认值是null,如果构造器里不初始化board,那调用getBoard()拿到的就是null,后续调用方法肯定报错。
核心修复步骤
补全
Game构造器的初始化逻辑
你需要在Game的构造器里创建Board的实例,把它赋值给board成员。结合你传入兔子位置参数的逻辑,代码应该是这样:public Game(int[] rabbitPositions, Player player) { this.player = player; // 这里要匹配Board类的构造器,假设Board能接收兔子位置数组作为参数 this.board = new Board(rabbitPositions); }如果你的
Board类构造器不需要参数,那就直接写this.board = new Board();就行——核心是必须给board分配一个实实在在的实例,不能让它一直是null。确认
getBoard()方法的正确性
检查你的getBoard()方法是不是真的返回了成员变量board,别写岔了:public Board getBoard() { return this.board; }单独验证
Board的displayBoard()方法
有时候也可能是displayBoard()自己的逻辑有问题,比如它引用了Board里某个没初始化的变量。你可以写个小测试,直接创建Board实例调用这个方法,看看能不能正常运行:public static void main(String[] args) { Board testBoard = new Board(getRandomPositions()); testBoard.displayBoard(); }
额外要排查的点
- 先确认
getRandomPositions()返回的数组是合法的,比如长度、数值范围是不是符合Board的要求——如果这个数组有问题,可能导致Board初始化失败,进而让board还是null。 - 顺便检查下
Player对象是不是也正确初始化了,虽然当前报错在board,但如果构造器里因为Player的问题抛出异常,也会影响board的初始化。
内容的提问来源于stack exchange,提问作者Diablo
相关产品推荐
相关产品推荐

