for循环创建对象数组会导致错误的值

时间:2015-07-06 17:54:20

标签: java arrays for-loop

我目前正在尝试使用char数组创建一个对象数组。 我的问题是for循环似乎在对象中插入了错误的值。我只是无法弄清楚出了什么问题。我试图解决它几个小时但没有任何效果。

例如:for循环中的if内部检测到它位于右侧字符'@'且j = 6,k = 5。 (使用System.out.println()检查它。) 我告诉它在GameObject数组中创建一个对象并给它适当的坐标(x = k,y = j)。但由于某种原因,坐标结果是(k =)x = 5而(j =)y = 5而不是?!

由于某些原因,这两个值似乎总是相同的。无论如何,它总是1,1; 2,2; 3,3等...这个数字基本上是k(=预期的y坐标)两次。它似乎没有正确访问“j”?

对象数组本身没问题,只是对象里面的值变坏了。

在代码中,方法如下所示:

public static GameObject[][] initGO(int x, int y) throws IOException {

    GameObject[][] goMap = new GameObject[x][y];
    LoadFile loader = new LoadFile();
    char[] ch = loader.readChar("src\\control\\bla.txt");

    int i = 0;
    while (i < ch.length) {
        for (int j = 0; j < y; j++) {
            for (int k = 0; k < x; k++) {
                if (ch[i] == '@') {
                    goMap[k][j] = new Player(k, j, "Player");
                }
                i++;
            }
        }
    }
    return goMap;
}

播放器看起来像这样:

public class Player extends GameObject {

    public Player(int x, int y, String name) {
        super(x, y, name);
        this.x=y;
        this.y=y;
        this.name = name;
    }
}

非常感谢任何想要帮助的人!

1 个答案:

答案 0 :(得分:1)

设置变量时,您发生了一个简单的复制粘贴编辑错误。看看这部分代码:

public Player(int x, int y, String name) {
    super(x, y, name);
    this.x=y; // <-- This should be "this.x=x;"
    this.y=y;
    this.name = name;
}