首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 三數排序邏輯除錯:為何 Debug 時只進入第一個 if?

     編輯:程式設計綜合問答

現象

使用三層 if 交換法對三個整數排序,Debug 發現只有第一個 if 執行,後兩個直接跳過,最後輸出結果。以為是程式邏輯錯誤。

真相:條件不滿足,非 Bug

排序演示碼:

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 數排序,程式碼更簡潔、不易出錯。

  1. 上一篇文章:
  2. 下一篇文章:
Android TableLayout 動態設置列寬與伸展的完整指南 Android 拍照保存到自定義目錄並掃描相冊 C 語言編譯通過但構建失敗:常見原因與 VC++6.0 建議 Struts2 `` 與原生 `