Java-自定义类数组设置其中所有元素的最后一个值

时间:2018-12-01 15:40:20

标签: java arrays loops for-loop reset

这是与该“错误”相关的代码的一部分:

第一个是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

我不知道自己在做什么错,我已经遍历了很多次代码,对于有人为我指出来,我将非常感谢。非常感谢你!

1 个答案:

答案 0 :(得分:2)

static成员属于该类,而不是特定的实例。您可以将它们视为在所有实例之间共享,这说明了为什么所有Tile都具有相同的值。只需使idXidY实例成员(通过删除static修饰符),就可以了:

public class Tile {
    private int idX;
    private int idY;

    // Rest of the code...