You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

蛇梯棋游戏createSnakes方法抛出NullPointerException异常排查求助

问题排查结果

空指针根本原因

  • 随机位置生成逻辑返回了无效的节点编号:getInitPosition() 方法返回值范围是 0 ~ dimension-1,但你的棋盘节点编号是从1到dimension,当随机到0时,get() 方法会返回null,后续调用 init.getSnakeTail() 就会触发空指针异常。
  • 蛇尾位置生成逻辑也存在同样问题:endPosition = (int) (Math.random() * initPosition) 当initPosition为1时,会生成0,导致end变量为null,调用end.getSnakeHead()时也会触发空指针。

修复方案

1. 修正随机位置生成方法

修改getInitPosition()方法,确保返回的位置在有效节点编号范围内(1~dimension-1,避免生成最后一个节点作为蛇头/梯子底部):

private int getInitPosition(){
    // 生成1到dimension-1的整数
    return (int) (Math.random()*(dimension - 1)) + 1;
}

2. 修正蛇尾位置生成逻辑

在createSnakes()方法中修改endPosition的生成逻辑,确保蛇尾编号最小为1:

// 生成1到initPosition-1的整数作为蛇尾位置
int endPosition = (int) (Math.random() * (initPosition - 1)) + 1;

3. 可选优化(避免栈溢出)

你当前的重试逻辑是不符合条件就递归调用自身,如果棋盘剩余可用位置不足时会触发栈溢出,建议改成循环重试的方式替代递归重试。

内容的提问来源于stack exchange,提问作者JokerFever

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 08:15:02