java - For-loop 在迭代 vector 数组时仅给出一个值 (libGDX)

标签 java arrays for-loop 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]?我希望它返回与之前初始化的值相同的值。有办法做到这一点吗?

预先感谢您的帮助<3

最佳答案

在第二个双 for 循环中

 collisionStart[i - 1] = position;

应改为

collisionStart[i - 1] = new Vector2(...);

我不确定您从哪里获得位置。
但我假设您将某个 Vector2 分配给 Vector2 数组的每个元素
整个数组指向同一个对象,因此您的输出位于 for 循环之外。

关于java - For-loop 在迭代 vector 数组时仅给出一个值 (libGDX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30644161/

相关文章:

java - 如何在 Wicket 口中实现具有 2 个相关下拉菜单的可编辑网格?

c++ - 有什么方法可以检测指针是否指向数组?

java - 在 Java 中,一秒钟需要多长时间?测量 Java 中的延迟时间

postgresql - 在 PostgreSQL 中循环

c++ - 在使用数组时使用 vector 容器挂起可快速计算2D数组

c++ - C++17 中新的基于范围的 for 循环如何帮助 Ranges TS?

java - ThreadLocal是在TLAB中分配的吗?

java - 如何从 Java 中将 JSONArray 作为几何图形插入 MySQL?

java - HashMap 空值问题

javascript - for循环nodeJS中的Mongo查询