我目前正在尝试使用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;
}
}
非常感谢任何想要帮助的人!
答案 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;
}