我只是尝试通过数组数组中的每个变量迭代:
这是工作代码:
int[][] mArray;
mArray = new int[2][2];
mArray[0][0] = 1;
mArray[0][1] = 2;
mArray[1][0] = 3;
mArray[1][1] = 4;
for (int i = 0; i < mArray.length; i++)
{
for (int x = 0; x < mArray[i].length; x++)
{
System.out.println(mArray[i][x]);
}
}
这打印出来:
1234
一切都很好。
但是,如果我替换
" for(int x = 0; x&lt; marray [i] .length ; x (
" for(int x = 0; x&lt; marray [x] .length ; x (
它会收到以下错误:"线程中的"异常"主" java.lang.arayindexoutofboundsexception:2"。
谁能解释为什么发生此错误?marray [i] .length和marray [x] .length都会导致" 2"值,那么为什么第二个选项不起作用?
预先感谢:(
说明很简单。
for (int x = 0; x < mArray[x].length; x++) {
// body
}
迭代之前:x = 0
语句执行顺序:
-1st迭代:0&lt;marray [0] .length == true;执行身体;增量x (x == 1(
- 第二次迭代:1&lt;marray [1] .length == true;执行身体; 增量x(x == 2(
- 第三次迭代: 2&lt;marray [2] .length 原因 ArrayIndexOutOfBoundSexception,因为X == 2,Marray的长度为2
upd :完全,用x在内周期中替换i是错误的逻辑,因为i-是行计数器,而x- counters counters。