---
# System prepended metadata

title: 陣列迴圈題目拆解
tags: [for loop, index, array, tutorial article]

---

```java

//原始題目
public class Main(String[] args) {
    int[][] myNumbers = { {1, 2, 3, 4}, {5, 6, 7} };
    for (int i = 0; i < myNumbers.length; i ++) {
        for (int j = 0; j < myNumbers[i].length; j ++) {
            System.out.println(myNumbers[i][j]);
        }
    }
}

//演進過程0
public class Main(String[] args) {
    int[] index0Array = {1, 2, 3, 4}; //myNumbers[0];
    int[] index1Array = {5, 6, 7};    //myNumbers[1];
    int[][] myNumbers = { index0Array, index1Array };
    for (int i = 0; i < myNumbers.length; i ++) {
        for (int j = 0; j < myNumbers[i].length; j ++) {
            //myNumbers[0].length 等於 index0Array.length
            //myNumbers[1].length 等於 index1Array.length
            System.out.println(myNumbers[i][j]);
        }
    }
}

//演進過程1
public class Main(String[] args) {
    int[][] myNumbers = { {1, 2, 3, 4}, {5, 6, 7} };
    for (int i = 0; i < myNumbers.length; i ++) {
        //若都不印出內容, 第一次會跑 0, 第二次會跑 1
        //因為 myNumbers 的長度就是 2
        System.out.println(i);
    }
}

//演進過程2
public class Main(String[] args) {
    int[][] myNumbers = { {1, 2, 3, 4}, {5, 6, 7} };
    for (int i = 0; i < myNumbers.length; i ++) {
        //若仍然不印出內容, 第一次迴圈 i 會是 0, 第二次會是 1
        //進到 j 的 for 迴圈後, 
        //第一次 myNumbers[i].length 的長度會拿到 4
        //第二次 myNumbers[i].length 的長度會拿到 3
        for (int j = 0; j < myNumbers[i].length; j ++) {
            //當 i = 0 時，j 會拿到 {1, 2, 3, 4} 這個陣列, 
            //因為長度是 4, 所以下面會印出 0,1  0,2  0,3  0,4 的訊息
            //當 i = 1 時，j 會拿到 {5, 6, 7} 這個陣列
            //因為長度是 3, 所以下面會印出 1,0  1,1  1,2 的訊息
            System.out.println(i + "," + j);
        }
    }
}

//演進過程3
public class Main(String[] args) {
    int[][] myNumbers = { {1, 2, 3, 4}, {5, 6, 7} };
    for (int i = 0; i < myNumbers.length; i ++) {
        //若仍然不印出內容, 第一次迴圈 i 會是 0, 第二次會是 1
        //但是 j 的 for 迴圈, 
        //第一次 myNumbers[i].length 的長度會拿到 4
        //第二次 myNumbers[i].length 的長度會拿到 3
        for (int j = 0; j < myNumbers[i].length; j ++) {
            //當 i = 0 時，j 會拿到 {1, 2, 3, 4} 這個陣列,
            //因為長度是 4, 所以下面會印出 0,1  0,2  0,3  0,4 的訊息
            //當 i = 1 時，j 會拿到 {5, 6, 7} 這個陣列,
            //因為長度是 3, 所以下面會印出 1,0  1,1  1,2 的訊息
            System.out.println(i + "," + j);
            //此時把原本題目的內容貼回來過程3
            //發現用 0,1  0,2  0,3  0,4 去陣列裡面拿資料, 會拿到 1, 2, 3, 4 的值
            //如果用 1,0  1,1  1,2 去陣列裡面拿資料, 就會拿到 5, 6, 7 的值
            System.out.println(myNumbers[i][j]);
        }
    }
}

```