【发布时间】:2012-12-19 06:13:25
【问题描述】:
我今天有一个非常有趣的问题。我正在尝试修改一个数组,但方法修改了另一个甚至没有调用的数组。
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)pasteToArray
这是一个非常简单的方法,它接收 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 分钟的无助哭泣包括咒骂
- 检查全局变量
- 将所有方法输入重命名为相对中性名称
谁能帮我解决这个问题?
【问题讨论】:
-
在给Java方法名时不要使用下划线('_')。这不是惯例。