代码不断向后向数组输入值

时间:2013-08-11 05:36:26

标签: java arrays

所以我有这个代码,我试图弄清楚地图中有多少个地面层:

    int layerNum=5 //in the current map it has 5 layers
    int index = 3 //in the current map
    fgLayers = new int[layerNum - (index + 1)];
    for (int x = 0; x < fgLayers.length; x++) {
        fgLayers[x] = layerNum - x - 1;
        Gdx.app.log(ChromeGame.LOG, fgLayers[x] + "");
    }

但是,它将值放入fgLayers数组中,而不是3,4,而是4,3。我需要它的顺序正确,因为每个图层上都有一些图像,当按照不同的顺序放置时看起来不合适。

不幸的是,我无法看到我在这段代码中所处的位置,我尝试在for循环中切换它的开始位置(从fgLayers.length开始,结束于0)但是这也没有用。

4 个答案:

答案 0 :(得分:2)

x正在增加,因此layerNum - x - 1当然会减少。我不确定你想要实现什么,但是你可以改变你的for循环来倒退。或者你可以完全改变layerNum - x - 1

答案 1 :(得分:1)

fgLayers[x] = layerNum - x - 1;

x为0时,fgLayers [0] = 5 - 0 - 1为4。

x为1时fgLayers [1] = 5 - 1 - 1为3。

for循环中的块只执行一次,因此您只能将4作为输出。

答案 2 :(得分:1)

而不是

fgLayers[x] = layerNum - x - 1;

使用

fgLayers[x] = index + x;

这会产生你描述的结果,但是你在这里尝试做的事情并不清楚。

您还需要将数组声明更改为new int[layerNum - index];

答案 3 :(得分:1)

因此,使用JLRishes回答我修改了一下以使用我的代码

    int topLayerStart = index + 1;
    fgLayers = new int[layerNum - topLayerStart];

    for (int x = 0; x < fgLayers.length; x++) {
        fgLayers[x] = x + topLayerStart;
        Gdx.app.log(ChromeGame.LOG, fgLayers[x] + "");
    }

在索引+ 1处制作循环,以便下一层并​​从那里开始增加。