繁体   English   中英

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

[英]for-loop creating array of objects leads to wrong values

我目前正在尝试从字符数组中创建一个对象数组。 我的问题是 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;
    }
}

非常感谢任何试图提供帮助的人!

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

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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM