2013-12-11 199 views
1

林具有与某个块的代码很奇怪的问题:迭代2维炭阵列

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永远不会等于或大于look [0] .length并且对于cl是相同的。
和look.length

回答

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]); 
    } 
} 
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]); 
    } 
}