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