通过Java的一系列阵列迭代



我只是尝试通过数组数组中的每个变量迭代:

这是工作代码:

    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。

最新更新