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