这是我在骑士巡回赛中的尝试,我在这里尝试做的是向用户展示他们可以从阵列中的任何位置做出哪些动作。
问题出现NextPos[x+1][y-2]!=null
在 if 语句中,因为java.lang.ArrayIndexOutOfBoundsException: -2
抛出了异常。
我知道数组在这个位置超出了界限,但这就是重点,所以它不会打印出这个位置可用。
我的问题是,有没有办法获得相同的结果*或捕获异常以使其通过?
*在 if() 中使用越界数组。
打印时数组如下所示:
1 2 3 4
A{0 0 0 0}
B{0 0 0 0}
C{0 0 0 0}
x
和y
的值为0
。Board 数组与 NextPos 数组大小相同,但它是一个 int 数组。
public static void MoveTo(int x, int y, int Board[][]) {
TextIO.putln("jhgkgk");
String NextPos[][] = {
{"A1", "A2", "A3", "A4"},
{"B1", "B2", "B3", "B4"},
{"C1", "C2", "C3", "C4"}
};
for (int i = 0; i < 9; i++)
{
switch (i) {
case 1:
if (NextPos[x + 1][y - 2] != null && Board[x + 1][y - 2] == 0) {
TextIO.putln("test to see if the code gets this far :3");
TextIO.putln(NextPos[x + 1][y - 2]);
}
break;
case 2:
if (NextPos[x + 1][y + 2] != null && Board[x + 1][y + 2] == 0) {
TextIO.putln(NextPos[x + 1][y + 2]);
}
break;
case 3:
if (NextPos[x + 2][y - 1] != null && Board[x + 2][y - 1] == 0) {
TextIO.putln(NextPos[x + 2][y - 1]);
}
break;
case 4:
if (NextPos[x + 2][y + 1] != null && Board[x + 2][y + 1] == 0) {
TextIO.putln(NextPos[x + 2][y + 1]);
}
break;
case 5:
if (NextPos[x - 1][y - 2] != null && Board[x - 1][y - 2] == 0) {
TextIO.putln(NextPos[x - 1][y + 2]);
}
break;
case 6:
if (NextPos[x - 1][y + 2] != null && Board[x - 1][y + 2] == 0) {
TextIO.putln(NextPos[x + 1][y + 2]);
}
break;
case 7:
if (NextPos[x - 2][y + 1] != null && Board[x - 2][y + 1] == 0) {
TextIO.putln(NextPos[x - 2][y + 1]);
}
break;
case 8:
if (NextPos[x - 2][y + 1] != null && Board[x - 2][y + 1] == 0) {
TextIO.putln(NextPos[x - 2][y + 1]);
}
break;
}
}
}