我今天有一个非常有趣的问题。我正在尝试修改一个数组,但方法修改了另一个甚至没有调用的数组。
a) 造成麻烦的部分方法
public static void place2(String output, int position,furniture furniture_array[], char room_grid[][]) {
int i=0;
int j=0;
furniture_array[position].setXY(i, j);
char grid1[][] = room_grid;
char grid2[][] = room_grid;
char grid3[][] = room_grid;
char grid4[][] = room_grid;
pasteToArray(i, j, grid1, furniture_array[position]);
}
b)粘贴到数组
这是一个非常简单的方法,它接收 input_array 并且在这个数组中它将过去数组,它是一个对象值。
public static char[][] pasteToArray(
int x, int y, char input_array[][], furniture furniture_to_be_placed) {
char[][] result=input_array;
for (int i = 0; i <= furniture_to_be_placed.getSize(); i++) {
for (int j = 0; j <= furniture_to_be_placed.getSize(); j++) {
result[x + i][y + j] = furniture_to_be_placed.furn_grid[i][j];
}
}
return result;
}
我的问题是什么?
- 为什么输入 A、B 和结果 C 的方法会修改 D?(相对名称)
我自己已经做了什么来解决它: -
- 调试代码 - 找到导致问题的方法
- 25分钟无助的哭泣包括咒骂
- 检查全局变量
- 将所有方法输入重命名为相对中性名称
谁能帮我解决这个问题?