For 循环在遍历向量数组时只给出一个值 (libGDX)
For-loop gives only one value when iterating through an array of Vectors (libGDX)
我只是一个初学者,所以这可能是一些我能识别的小错误,但是是的...我正在使用 libGDX 库,这是我的方法代码:
public Vector2[] initCollisionStart() {
int i = 0;
for (int row = 0; row < currentMapHeightTiles; row++) {
for (int col = 0; col < 9; col++) {
if (currentMap[row][col] == 4) {
i++;
} else if (currentMap[row][col] == 3) {
i++;
}
}
}
Gdx.app.log("initCollisionStart", "works");
Vector2[] collisionStart = new Vector2[i];
for (int row = 0; row < currentMapHeightTiles; row++) {
for (int col = 0; col < 9; col++) {
if (currentMap[row][col] == 4) {
position.x = col * 40;
position.y = row * 40;
collisionStart[i - 1] = position;
System.out.println("CollisionStart[" + i + "] = " + collisionStart[i - 1]);
i--;
} else if (currentMap[row][col] == 3) {
position.x = col * 40;
position.y = row * 40;
collisionStart[i - 1] = position;
System.out.println("CollisionStart[" + i + "] = " + collisionStart[i - 1]);
i--;
}
}
}
collisionInitialized = true;
System.out.print("\n");
for (int z = 0; z < collisionStart.length; z++) {
System.out.println("CollisionStart[" + z + "] = " + collisionStart[z]);
}
return collisionStart;
}
我的输出看起来像这样:
initCollisionStart: works
CollisionStart[7] = [40.0:5760.0]
CollisionStart[6] = [80.0:5760.0]
CollisionStart[5] = [120.0:5760.0]
CollisionStart[4] = [160.0:5760.0]
CollisionStart[3] = [200.0:5760.0]
CollisionStart[2] = [240.0:5760.0]
CollisionStart[1] = [280.0:5760.0]
CollisionStart[0] = [280.0:5760.0]
CollisionStart[1] = [280.0:5760.0]
CollisionStart[2] = [280.0:5760.0]
CollisionStart[3] = [280.0:5760.0]
CollisionStart[4] = [280.0:5760.0]
CollisionStart[5] = [280.0:5760.0]
CollisionStart[6] = [280.0:5760.0]
这是我的问题。当我在这个双 for 循环之外使用它时,为什么这个 collisionStart 数组的每个值都等于 [280.0:5760.0]?我希望它与之前初始化的 return 相同的值。有办法吗?
在此先感谢您的帮助<3
在你的第二个双 for 循环中
collisionStart[i - 1] = position;
应该改为
collisionStart[i - 1] = new Vector2(...);
我不确定你从哪里得到位置。
但我假设您分配给 Vector2 数组的 每个元素 的是一些 Vector2。
整个数组 指向同一个对象 ,因此你的输出在 for 循环之外。
我只是一个初学者,所以这可能是一些我能识别的小错误,但是是的...我正在使用 libGDX 库,这是我的方法代码:
public Vector2[] initCollisionStart() {
int i = 0;
for (int row = 0; row < currentMapHeightTiles; row++) {
for (int col = 0; col < 9; col++) {
if (currentMap[row][col] == 4) {
i++;
} else if (currentMap[row][col] == 3) {
i++;
}
}
}
Gdx.app.log("initCollisionStart", "works");
Vector2[] collisionStart = new Vector2[i];
for (int row = 0; row < currentMapHeightTiles; row++) {
for (int col = 0; col < 9; col++) {
if (currentMap[row][col] == 4) {
position.x = col * 40;
position.y = row * 40;
collisionStart[i - 1] = position;
System.out.println("CollisionStart[" + i + "] = " + collisionStart[i - 1]);
i--;
} else if (currentMap[row][col] == 3) {
position.x = col * 40;
position.y = row * 40;
collisionStart[i - 1] = position;
System.out.println("CollisionStart[" + i + "] = " + collisionStart[i - 1]);
i--;
}
}
}
collisionInitialized = true;
System.out.print("\n");
for (int z = 0; z < collisionStart.length; z++) {
System.out.println("CollisionStart[" + z + "] = " + collisionStart[z]);
}
return collisionStart;
}
我的输出看起来像这样:
initCollisionStart: works
CollisionStart[7] = [40.0:5760.0]
CollisionStart[6] = [80.0:5760.0]
CollisionStart[5] = [120.0:5760.0]
CollisionStart[4] = [160.0:5760.0]
CollisionStart[3] = [200.0:5760.0]
CollisionStart[2] = [240.0:5760.0]
CollisionStart[1] = [280.0:5760.0]
CollisionStart[0] = [280.0:5760.0]
CollisionStart[1] = [280.0:5760.0]
CollisionStart[2] = [280.0:5760.0]
CollisionStart[3] = [280.0:5760.0]
CollisionStart[4] = [280.0:5760.0]
CollisionStart[5] = [280.0:5760.0]
CollisionStart[6] = [280.0:5760.0]
这是我的问题。当我在这个双 for 循环之外使用它时,为什么这个 collisionStart 数组的每个值都等于 [280.0:5760.0]?我希望它与之前初始化的 return 相同的值。有办法吗?
在此先感谢您的帮助<3
在你的第二个双 for 循环中
collisionStart[i - 1] = position;
应该改为
collisionStart[i - 1] = new Vector2(...);
我不确定你从哪里得到位置。
但我假设您分配给 Vector2 数组的 每个元素 的是一些 Vector2。
整个数组 指向同一个对象 ,因此你的输出在 for 循环之外。