Java数组索引超出范围
好的,所以我的代码中有一部分出现了数组索引越界错误。特别是在第85-102行 我的代码: 我只是想让它提前检查被阻挡的瓷砖,这样我的精灵就不会朝着它不能移动的方向移动。只有当我在地图的右角或下角时,才会发生这种异常Java数组索引超出范围,java,arrays,applet,Java,Arrays,Applet,好的,所以我的代码中有一部分出现了数组索引越界错误。特别是在第85-102行 我的代码: 我只是想让它提前检查被阻挡的瓷砖,这样我的精灵就不会朝着它不能移动的方向移动。只有当我在地图的右角或下角时,才会发生这种异常 我猜为什么会发生这种错误,如果因为我在拐角处。。它会检查右侧和底部没有的平铺…您必须在blocked()函数中执行一些边界检查。确保他们提供给您的坐标确实存在,如果不存在,则返回一些“阻塞”值。在底部或右侧获取错误的描述似乎建议您需要测试该值是否超过数组边界。看一看Array.len
我猜为什么会发生这种错误,如果因为我在拐角处。。它会检查右侧和底部没有的平铺…您必须在blocked()函数中执行一些边界检查。确保他们提供给您的坐标确实存在,如果不存在,则返回一些“阻塞”值。在底部或右侧获取错误的描述似乎建议您需要测试该值是否超过数组边界。看一看Array.length(数组长度)您实现blocked(tx,ty)的方式,它只接受合法的板坐标(0请发布相关的代码片段。您应该将其粘贴到相关行中。此外,我假设您在堆栈跟踪中看到了异常,该跟踪显示了异常发生的行,而不是您所建议的某个神秘范围。@Dan:您所说的根本没有意义。您不需要打印堆栈跟踪来查看它,fi首先,您声明的错误毫无意义。Exception有一个名为“printStackTrace”的方法;getStackTrace几乎肯定不是您想要的。@Dan:这是您第二次用这个蹩脚的借口不显示stacktrace。或者发布代码,给出神秘的“必须是无效的”错误,或者找出如何打印Java教程中的stacktraces。@Dan:哦,是的……并学习如何为发布到的站点正确设置代码格式。你知道,这真的没那么难。
if (spawnX == 0 || blocked(spawnX - 1, spawnY)) {
left = false;
System.out.println("You can't go left!");
}
if (spawnX == 12 || blocked(spawnX + 1, spawnY)) {
right = false;
System.out.println("You can't go right!");
}
if (spawnY ==0 || blocked(spawnX, spawnY - 1)) {
up = false;
System.out.println("You can't go up!");
}
if (spawnY == 8 || blocked(spawnX, spawnY + 1)) {
down = false;
System.out.println("You can't go down!");
}