我调用函数移动与2维阵列全零的点[6,5]其具有值0 。该功能将值增加到。局部变量的更新全局在Java
然后同样的功能调用自身再次举动(X - 1,Y,地图,ⅰ),这就意味着它是在点[5,5]与值,它增加了到并结束本身。
但是为什么图变量也被更新的函数,它被称为第一?
private static byte[10][10] myMap = {*all zeros*};
public static void main(String[] args) {
move(6, 5, myMap, 0);
}
private static void move(int x, int y, byte[][] map, int i) {
if (map[x][y] == 0) {
map[x][y]++;
i++;
}
if (i > 1) return;
System.out.print(x + " " + y);
// 6 5
System.out.print(map[5][5] + " " + i);
// 0 1
move(x - 1, y, map, i);
System.out.print(map[5][5] + " " + i);
// 1 1 ... WTH? Shouldn't this return 0 1 like above?
}
而当它更新地图,为什么它不更新我变量?
我挣扎小时找到原因,但仍然不知道:/ 感谢您的帮助
什么'私人静态的byte [] [] = MYMAP新的字节[10] [10]'?请注意,在Java中,数组总是会被初始化为“false”,“0”或“null”。 – 2014-11-22 13:43:38
我已经更新了使用地图的答案中的一些示例,但最终您可能希望创建一个使用'byte [] []'作为字段(或称为'GameMap',但不是'Map',因为这是来自'java.util'的重用类)。 – 2014-11-22 14:18:20
@owlstead谢谢,我只需要cloneMap函数..因为我没有做任何游戏,我不需要存储地图,我唯一关心的是**我**和时间多久需要考虑我正在建设的机器人旅行..我删除了所有的方法和东西,只是为了显示我的问题;) – user2781994 2014-11-22 16:51:10