在 Java 基礎學習中,一維數組的查找操作是必修課題。許多初學者在編寫查找邏輯時,容易陷入「找到後未跳出循環」或「未找到時重複輸出」的陷阱。本文通過一個具體案例,剖析常見錯誤並給出最佳實踐代碼。
初學者常寫出如下邏輯:
for (int i = 0; i < arr.length; i++) {
if (n == arr[i]) {
System.out.println("位置" + i);
} else {
System.out.println("沒有");
}
}
這會導致:找到目標後仍繼續遍歷,且每次不匹配都輸出「沒有」,輸出結果混亂。
核心要點:
break 跳出循環public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("請輸入要查找的數字:");
int n = sc.nextInt();
int[] arr = { 1, 2, 3, 4 };
for (int i = 0; i < arr.length; i++) {
if (n == arr[i]) {
System.out.println("找到於索引位置:" + i);
break; // 關鍵:找到即停止
} else if (i == arr.length - 1) {
// 走到最後一個仍未匹配
System.out.println("數組中不存在該數字");
}
}
}

else 分支輸出「不存在」,否則每次比較失敗都會打印break 提升效率,避免無效遍歷i == arr.length - 1 確保只在最後才輸出「未找到」若需查找所有匹配位置,可移除 break 並收集索引到列表;若數組有序,優先考慮二分查找(Arrays.binarySearch)將時間複雜度從 O(n) 降至 O(log n)。