我需要向后循环一个二维数组,以进行我正在做的一个小地图项目。我根据我在线阅读的内容尝试这样做,但我的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();
}
}
}
答案 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开始(所以你不会得到一个超出范围的索引错误)并继续直到它达到零。