我有这个2d数组:
public int[][] intmap =
{
{0, 0, 0, 0, 0},
{0, 1, 2, 0, 0},
{0, 0, 2, 0, 0},
{0, 3, 0, 0, 0},
{0, 0, 0, 3, 3}
};
如何在不踩数字2或3的情况下移动数组中的数字1如果下一步是其中之一,我想打印出一条警告消息。我试着使用一个例外,因为我不想走出地图这是一个方向的示例(来自我的代码(:
public void goRight() {
try {
if (intmap[i][j + 1] != 2 && intmap[i][j + 1] != 3) {
intmap[i][j] = previousNumber;
previousNumber = intmap[i][j + 1];
intmap[i][j] = 1;
} else {
System.out.println("You can not move here!");
}
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("You can not move outside the the map!");
}
}
我一开始尝试使用++j
,但没有if()
,效果很好。它不让我走出地图,但我想解决";数字2和3";问题所以我做了一个if(){}else{}
,但效果不太好。我的朋友告诉我应该使用j+1
而不是++j
,但在这种情况下字符不会移动。previousNumber
是一个int,其中我存储数字1所在的位置。默认情况下,我给出int previousNumber = 0
。我可以调用direction方法并打印出数组。
我在if
语句中使用了++j
而不是j+1
。
public void goRight() {
try {
if (intmap[i][j + 1] != 2 && intmap[i][j + 1] != 3) {
intmap[i][j] = previousNumber;
previousNumber = intmap[i][++j];
intmap[i][j] = 1;
} else {
System.out.println("You can not move here!");
}
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("You can not move outside the the map!");
}
}