使用三層 if 交換法對三個整數排序,Debug 發現只有第一個 if 執行,後兩個直接跳過,最後輸出結果。以為是程式邏輯錯誤。
排序演示碼:
if (num1 > num2) { swap(num1, num2); }
if (num2 > num3) { swap(num2, num3); }
if (num1 > num2) { swap(num1, num2); }
若輸入 1 2 3(已排序),則:
if:1 > 2 為 false,不進入。if:2 > 3 為 false,不進入。if:1 > 2 為 false,不進入。程式完全正常,只是輸入資料剛好不觸發交換條件。
3 2 1 或 2 3 1 等逆序/亂序資料,觀察三個 if 依序觸發。if 內加 System.out.println("進入第 n 個 if") 追蹤流程。int[] arr = {num1, num2, num3};
Arrays.sort(arr);
System.out.println(arr[0] + " " + arr[1] + " " + arr[2]);
陣列 + Arrays.sort() 可擴展至 N 數排序,程式碼更簡潔、不易出錯。