这是与该“错误”相关的代码的一部分:
第一个是Tile类:
public class Tile {
private static int idX;
private static int idY;
public int getI() {
return idX;
}
public int getJ() {
return idY;
}
public void setI(int i) {
idX = i;
}
public void setJ(int j) {
idY = j;
}
}
第二个是Map类:
public class Map {
public static int maxX;
public static int maxY;
public static Tile[][] tile;
public static void flat(int x, int y) {
maxX = x;
maxY = y;
tile = new Tile[maxX][maxY];
for(int i=0; i<maxX; i++) {
for(int j=0; j<maxY; j++) {
tile[i][j] = new Tile();
tile[i][j].setI(i);
tile[i][j].setJ(j);
System.out.println(i + " " + j + " idX " + tile[i][j].getI()+ " idY " + tile[i][j].getJ());
}
}
}
我希望我的Tiles具有idX和idY的这些值:
瓦片[0] [0] ---> 0,0
瓷砖[0] [1] ---> 0,1
瓦片[0] [2] ---> 0,2
让我们假设maxX和maxY(for循环的最大值)为8。 相反,每当我尝试调用Tiles的idX和IdY值时,它们都会像这样更改:
瓦片[0] [0]-> 7、7
瓦片[0] [1]-> 7、7
瓷砖[0] [2] ---> 7,7
我不知道自己在做什么错,我已经遍历了很多次代码,对于有人为我指出来,我将非常感谢。非常感谢你!
答案 0 :(得分:2)
static
成员属于该类,而不是特定的实例。您可以将它们视为在所有实例之间共享,这说明了为什么所有Tile
都具有相同的值。只需使idX
和idY
实例成员(通过删除static
修饰符),就可以了:
public class Tile {
private int idX;
private int idY;
// Rest of the code...