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

C# do-while 循環條件判斷:為什麼 while(true) 能無限循環而 while(fig<=5) 不行?

     編輯:程式設計綜合問答

代碼片段


int figure;
do {
    Console.WriteLine("請輸入數字:");
    figure = int.Parse(Console.ReadLine());
    switch (figure) {
        case 1: ... break;
        case 2: ... break;
        case 3: ... break;
        case 4: ... break;
        default: Console.WriteLine("輸入錯誤,請重新輸入"); break;
    }
} while (figure <= 5); // 連續輸入 4 次錯誤後退出

原因解析

  1. do-while **先執行一次循環體**,再判斷條件。
  2. 條件 figure <= 5:當輸入錯誤時 figure 可能為 0、-1、100 等。若連續輸入 4 次錯誤導致 figure 變為 6(或大於 5),條件為假,循環結束。
  3. while (true):條件恆為真,**無視 figure 值**,永遠循環。

圖示流程


// while (figure <= 5)
輸入 6 → figure=6 → 6<=5? false → 跳出循環
輸入 0 → figure=0 → 0<=5? true → 繼續循環

// while (true)
輸入任意值 → true → 永遠繼續

修正建議


// 方案 1:無限循環 + 內部 break
while (true) {
    figure = int.Parse(Console.ReadLine());
    if (figure >= 1 && figure <= 4) {
        // 處理業務
    } else {
        Console.WriteLine("輸入錯誤,請重新輸入");
    }
}

// 方案 2:保留 do-while 但條件永真
do {
    // ...
} while (true); // 等同 while(true)

關鍵知識點

  • do-while 至少執行一次。
  • 循環條件**只判斷布爾值**,true 是字面常量,不依賴變量。
  • 輸入驗證邏輯應與循環控制分離:循環負責「重複」,分支負責「合法性」。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved