CodeGym /課程 /C# SELF /do-while 迴圈:認識與使用小細節

do-while 迴圈:認識與使用小細節

C# SELF
等級 4, 課堂 3
開放

1. 認識 do-while 迴圈

來,先想像一下:你想寫一個猜數字的程式,讓使用者輸入一個數字,然後程式要至少問一次,而且要一直問到猜對為止。如果一開始條件就不成立,一般的 while 甚至連一次都不會進去。

這時候 do-while 迴圈就派上用場啦。跟 while 不一樣,它一定會先執行一次迴圈內容——就算條件一開始就是假的也一樣。就像你去超商,不管有沒有買東西都會先送你一片口香糖一樣。

do
{
    // 迴圈內容:這段程式碼至少會跑一次
}
while (條件);
do-while 迴圈語法

注意最後條件括號後面的分號 ;! 一般 while 是沒有的,這裡卻有。這對新手來說超容易踩雷 XD

do-while 迴圈的步驟說明

  1. 先進入迴圈內容(一定會跑一次)。
  2. 檢查條件。
  3. 如果條件成立——再跑一次內容。
  4. 如果條件不成立——跳出迴圈。

2. 跟一般 while 的差別

來回顧一下普通 while 的基本用法:

while (條件)
{
    // 迴圈內容
}

如果條件一開始就是假的,內容一次都不會執行!

現在來看 do-while 的例子:

do
{
    // 迴圈內容
}
while (條件);

就算條件一開始是假的,內容還是會先執行一次!

直接用程式碼來比較一下:

// 一般 while
int count = 0;
while (count > 0)
{
    Console.WriteLine("count = " + count);
    count--;
}
// 什麼都不會印出來

// do-while
int count2 = 0;
do
{
    Console.WriteLine("count2 = " + count2);
    count2--;
}
while (count2 > 0);
// 會印出 "count2 = 0",雖然條件一開始就是假的!

有時候這看起來很怪,但有些情境下這種行為超級有用(像是處理使用者輸入或資料驗證)。

3. do-while 的實用場景

這個迴圈最常出現在哪裡?

資料驗證

最常見的例子——你想讓使用者一定要輸入正確的東西(像只能輸入數字,或密碼至少 6 個字),就會一直問到他輸對為止。

string password;
do
{
    Console.Write("請輸入新密碼(至少 6 個字):");
    password = Console.ReadLine();
}
while (password.Length < 6);

Console.WriteLine("密碼 OK!");

這個例子裡,迴圈內容至少會跑一次——就算使用者第一次就輸入夠長的密碼。

命令列選單

超常見又實用的 pattern:顯示選單、等使用者輸入指令,只有特定指令才會跳出迴圈。

string command;
do
{
    Console.WriteLine("選單:");
    Console.WriteLine("1. 顯示歡迎訊息");
    Console.WriteLine("2. 離開");
    Console.Write("請選擇操作:");
    command = Console.ReadLine();

    if (command == "1")
    {
        Console.WriteLine("哈囉,世界!");
    }
    else if (command != "2")
    {
        Console.WriteLine("未知指令。");
    }
}
while (command != "2");

Console.WriteLine("掰啦!");

4. while 跟其他迴圈的比較

迴圈類型 條件檢查時機 內容可能執行次數 適合用在哪
while 前 0 次或更多 重複次數不確定時
do-while 後 1 次或更多 至少要執行一次時
for 前 0 次或更多 已知要跑幾次時
2
任務
C# SELF, 等級 4, 課堂 3
上鎖
do-while 迴圈基礎
do-while 迴圈基礎
2
任務
C# SELF, 等級 4, 課堂 3
上鎖
輸入數字中的最小值
輸入數字中的最小值
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION