【问题标题】:Java array error (2d array) [closed]Java数组错误(二维数组)[关闭]
【发布时间】:2026-02-04 22:20:02
【问题描述】:

运行 Deer Simulator 时出现错误 这是代码

        public void comparegrassDeer()
        {
            int[] grasspos = new int[3];
            int[] deerpos = new int[2];
            for (int i = 0;i < aog; ++i)
            {
                grasspos = g[i].getpos();
                for (int j = 1; i <= aod;++i)
                {
                    deerpos = d[j].getpos();
                    if ((deerpos[0] >= grasspos[0]) && (deerpos[0] <= grasspos[1]) && (deerpos[1] >= grasspos[2]) &&(deerpos[1] <= grasspos[3]))
                    {
                        if (g[i].checkFood() != 0)
                        {
                            g[i].foodLoss();
                        }
                        else
                        {
                            d[j].hunger();
                        }
                    }
                }
            }
        }
    }

主要问题在于比较草方法。 请注意,它在编译时有效,但在我在 cmd 窗口中键入 updatedeer 时会产生错误。创建数组索引越界错误。

【问题讨论】:

  • 添加堆栈跟踪..
  • 请为您的班级名称使用班级名称约定。还有太多可能与问题无关的代码。尝试仅包含您认为导致问题的代码以及堆栈跟踪。
  • 并尊重 Java 命名约定。类以大写字母开头。变量是驼峰式的。
  • 必须包含所有代码。不,你没有。阅读SSCCE,点击“编辑”开始删除代码
  • 会不会像这个错字一样简单:deerSin.createDeer(501, 1); 可能必须是 deerSim.createDeer(501, 1);

标签: java arrays simulator indexoutofboundsexception


【解决方案1】:

grasspos 是一个长度为 3 的数组。你调用 (deerpos[1] &lt;= grasspos[3]),我猜应该是 (deerpos[1] &lt;= grasspos[2]),因为 grasspos[3] 需要一个长度为 4 的数组。

【讨论】: