迭代2维char数组

时间:2013-12-11 15:29:00

标签: arrays exception iteration

我对某段代码有一个非常奇怪的问题:

for(int r = 0; r<look[0].length; r++){
for(int cl = 0; cl<look.length; cl++ ){
    placeChar(xI+cl, yI+r, look[cl][r]);  // <-- ArrayIndexoOutOfBoundsException
    }
}

我在假设     看[CL] [R] 是问题,但......这有什么可能吗?
因为r永远不会等于或大于外观[0]。长度和cl相同 和look.length

2 个答案:

答案 0 :(得分:1)

您需要颠倒循环的顺序:

for(int cl = 0; cl<look.length; cl++ ){
for(int r = 0; r<look[cl].length; r++){
    placeChar(xI+cl, yI+r, look[cl][r]);
    }
}

答案 1 :(得分:1)

如果我理解你,你应该

  • 更改迭代器的顺序
  • 使用look[cl].length代替look[0].length

代码:

for(int cl = 0; cl<look.length; cl++ ){
   for(int r = 0; r<look[cl].length; r++){
      placeChar(xI+cl, yI+r, look[cl][r]);  
    }
}