我調用函數移動與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