這是來自我在騎士遊戲遊戲中的嘗試,我在此嘗試的是向用戶展示什麼動作他們可以從陣列中的任何位置製造。在騎士之旅挑戰中,從玩家目前所處的座標向玩家展示他們可以移動的位置
在if語句中,問題到達NextPos[x+1][y-2]!=null
,因爲拋出異常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;
}
}
}
請正確地格式化的代碼。另外,請閱讀[this](http://stackoverflow.com/help/how-to-ask) – Turing85
歡迎來到StackOverflow!與IndexOutOfBoundsException關聯的-2表示您將-2作爲數組索引傳遞給NextPos。我猜測這是在x的值爲0時發生的,然後NextPos [x-2] [y + 1]會拋出這個異常,或者當y爲0時,導致NextPos [x-1] [y-2 ]扔。在引用數組之前,嘗試添加一個if語句來檢查x和y的值。 – dgvid