向后循环一个二维数组

时间:2015-04-18 22:18:19

标签: java arrays

我需要向后循环一个二维数组,以进行我正在做的一个小地图项目。我根据我在线阅读的内容尝试这样做,但我的2D阵列是不同的。我怎样才能向后循环呢?

for(int i = 0;  i < map.length; i++){
    for(int j = 0; j < map[i].length; j++) {
        switch (nmap[j][i]) {
            map[i][j] = new Tile();
        }
    }
}

4 个答案:

答案 0 :(得分:1)

另一方面,您需要以最高值启动索引,并在每次迭代时减少它。像这样:

for (int i = map.length - 1; i >= 0; i--)
    for (int j = map[i].length - 1; j >= 0; j--) {
        switch (map[i][j]) {
            map[i][j] = new Title();
        }
    }

请注意,在两个循环中,我们从最高索引开始,map.length - 第一个为1,第二个为map [i] .length,每次迭代为1,直到达到最低索引,两个循环都为0。

答案 1 :(得分:0)

使用for(int i = 0; i < length; i++),您从头开始(0),然后到最后(length)。

走另一条路,只需扭转一切:

for(int i = length - 1; i >= 0; i--)

很少有事情需要注意:

  • 我们必须length - 1,否则我们将从结束开始
  • 我们正在使用>=来包含0
  • 我们正在递减i而不是递增它。

如果您需要2D阵列,只需为第二维添加上述第二个。

答案 2 :(得分:-1)

要向后移动,您需要从最高索引读取为0。索引通常是长度-1,因为索引从0开始。内部j循环也是如此。从map [i]的最高索引开始,即长度-1。

例如。数组= [2,3,4,5,6] 长度= 5.如果向后,迭代= 4到0的指示。

  for(int i = map.length-1;  i >= 0; i--) {
        for(int j = map[i].length-1; j >= 0; j--) {
            //your operation
        }
    }

答案 3 :(得分:-3)

你走了。

for(int i = map.length-1;  i >= 0; i--){
    for(int j = map[i].length-1; j >= 0; j--) {
         switch (nmap[j][i]) {
             map[i][j] = new Tile()
        }
    }
}

而不是从0到map.length和0到map [i] .length,这个程序从map.length-1开始(所以你不会得到一个超出范围的索引错误)并继续直到它达到零。