###### tags: `Java 學習筆記` # Java 學習筆記 - 3-2: 多維陣列 Multidimensional Array ## 定義 由「列 (Row)」與「行 (Column)」組合而成 | Column 1 | Column 2 | Column 3 | | -------- | -------- | -------- | | Text | Text | Text | | Text | Text | Text | 一維陣列代表一列 ## 宣告 ```java= int arr[][] = new int[3][4]; ``` Or ```java= int[][] arr = new int[3][4]; ``` * 可以先宣告第一個而不宣告第二個,但不可以不宣告第一個就宣告第二個 * heap 裡有三個長度為四的空間,需要用巢狀(雙層)迴圈來處理 * steak 裡存著一維陣列的位置,會連到一個有三個長度的一維陣列,該陣列每一格各自對應那三個長度為四的陣列位置 * java 獨有 ```java= int arr[][] = new int[3][4]; for (int i = 0; i < 3; i++) { for (int j = 0; j < 4; j++) { arr[i][j] = j + 1; } } ``` ### 用迴圈寫入內容 ```java= int arr[][] = new int[3][]; for (int i = 0; i < 3; i++) { arr[i] = new int[i + 1]; } ``` * 第 0 格會存放長度為 1 的陣列的位置,以此類推 ```java= int arr[][] = new int[3][]; for (int i = 0; i < 3; i++) { arr[i] = new int[i + 1]; } for (int i = 0; i < 3; i++) { for (int j = 0; j < i + 1; j++) { arr[i][j] = j + 1; } } for (int i = 0; i < 3; i++) { for (int j = 0; j < i + 1; j++) { System.out.print(arr[i][j] + " "); } System.out.println(); } ``` * 二維陣列中 arr.length = Row 的長度 * 二維陣列中 arr[i].length = Column 的長度 ### 寫入內容範例: 學生成績 ```java= Scanner sc = new Scanner(System.in); int arr[][] = new int[2][3]; for (int i = 0; i < arr.length; i++) { System.out.println("請輸入 " + (i + 1) + " 的成績"); for (int j = 0; j < arr[i].length; j++) { int score; do { System.out.print("成績 " + (j + 1) + " 為"); score = sc.nexInt(); } while (score < 0 || score > 100); arr[i][j] = score; } } ```