Java 中陣列長度必須在創建時確定,但可透過 Scanner 讀取用戶輸入的長度,動態 new 陣列,再逐項讀取內容。本文提供完整可執行範例,並說明進階替代方案 ArrayList。
String[]import java.util.Scanner;
public class ArrayInputDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 1. 讀取陣列長度
System.out.print("請輸入陣列長度:");
int length;
try {
length = scanner.nextInt();
if (length <= 0) {
System.out.println("長度必須大於 0");
return;
}
} catch (Exception e) {
System.out.println("請輸入有效整數");
return;
}
scanner.nextLine(); // 吞掉換行符,避免影響後續 nextLine()
// 2. 動態創建陣列
String[] arr = new String[length];
// 3. 逐項讀取內容
System.out.println("請輸入 " + length + " 個元素 (每行一個,或空格分隔):");
for (int i = 0; i < length; i++) {
// next() 讀取下一個 token (以空白分隔)
// 若需整行含空格,改用 nextLine()
arr[i] = scanner.next();
}
// 4. 輸出驗證
System.out.print("陣列內容:");
for (String s : arr) {
System.out.print(s + "\t");
}
System.out.println();
scanner.close();
}
}
請輸入陣列長度:3
請輸入 3 個元素 (每行一個,或空格分隔):
apple
banana
cherry
陣列內容:apple banana cherry
scanner.nextInt() 後必須 scanner.nextLine() 清除殘留換行,否則第一次 nextLine() 會讀到空字串。next() 以空白 (空格、Tab、換行) 分隔;nextLine() 讀整行。按需選擇。nextInt() 拋 InputMismatchException,建議用 hasNextInt() 預檢或 try-catch。ArrayList (長度可變、功能豐富)若不想預先指定長度,或需頻繁增刪,ArrayList 更適合:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class ArrayListInputDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
List list = new ArrayList<>();
System.out.println("請輸入元素 (輸入 'end' 結束):");
while (scanner.hasNext()) {
String input = scanner.next();
if ("end".equalsIgnoreCase(input)) break;
list.add(input);
}
System.out.println("共輸入 " + list.size() + " 個元素:");
for (String s : list) System.out.print(s + " ");
// 若後續 API 需陣列:
String[] arr = list.toArray(new String[0]);
}
}
若需輸入矩陣 (如題目提到的排列組合矩陣),先讀行列數,再雙層迴圈:
int rows = scanner.nextInt();
int cols = scanner.nextInt();
int[][] matrix = new int[rows][cols];
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
matrix[i][j] = scanner.nextInt();
}
}
int n = scanner.nextInt(); Type[] arr = new Type[n];try-with-resources 或 finally)。List/ArrayList,僅在需與傳統 API 互操或極度在意記憶體佈局時用陣列。