1. 前言
想像一下,你有個任務:要在螢幕上印出 「哈囉!」 十次。當然啦,你可以寫十行 Console.WriteLine("哈囉!"); —— 不過你現在已經會用 while 迴圈了,這種小事根本難不倒你。
但還有另一種迴圈 —— for,它可以自動重複你要的動作指定次數。而且還會自己幫你數!
來看個經典範例:
for (int i = 0; i < 10; i++)
{
Console.WriteLine("哈囉!");
}
經典
for 迴圈 —— 印出 "哈囉!" 十次
這段程式在做什麼?它會在螢幕上印出 「哈囉!」 剛好 10 次。完全不用複製貼上,也不用手痠。
2. for 迴圈語法
for 迴圈有三個主要部分,寫在 for 關鍵字後面的括號裡:
for (初始化; 條件; 變化)
{
// 迴圈主體
}
for 迴圈的通用語法
我們來細看每個元素:
- 初始化 —— 通常是建立一個計數變數,拿來記錄重複次數(int i = 0)。
- 條件 —— 每次執行前都會檢查。如果成立就跑迴圈主體,不成立就結束。例如 i < 10。
- 變化 —— 每次執行完主體後會執行的運算,通常是讓計數器加或減(i++)。
可以畫個流程圖:
3. for 跟 while 的比較
你可能會更懂,如果我說 for 其實就是 while 迴圈的另一種寫法。
我們之前有 while 迴圈:
int i = 0; // 初始化迴圈變數
while(i < 10) // 檢查是否繼續
{
Console.WriteLine(i); // 有用的動作(主體)
i++; // 計數器加一
}
我們可以把它改寫成 for 迴圈,只要把控制邏輯都搬進去:
for (int i = 0; i < 10; i++) // 初始化;檢查條件;計數器加一
{
Console.WriteLine(i); // 有用的動作(主體)
}
兩種迴圈 的步驟:
- 初始化 int i = 0; 只做一次,在迴圈開始前。
- 然後檢查條件 i <= 10
- 然後執行主體 Console.WriteLine(i);
- 接著計數器加一 i++
- 然後回到步驟 2。
4. for 迴圈的使用範例
最簡單的例子
來印出 1 到 5:
for (int i = 1; i <= 5; i++)
{
Console.WriteLine(i);
}
輸出:
1
2
3
4
5
小提醒: 如果你寫 i < 5,最後只會印到 4。
倒數計時
想體驗一下當太空人嗎?來個倒數計時!
for (int i = 5; i > 0; i--)
{
Console.WriteLine(i);
}
Console.WriteLine("出發囉!");
輸出:
5
4
3
2
1
出發囉!
步長不是 1 的迴圈
你也可以讓計數器每次加的不只 1,可以是任何數字:
for (int i = 0; i <= 10; i += 2)
{
Console.WriteLine(i);
}
// 會印出:0 2 4 6 8 10
5. for 迴圈的變化型
多個變數的迴圈
有時候同時追蹤兩個變數很方便。比如我們來左右同時印數字:
for (int left = 1, right = 10; left <= 10; left++, right--)
{
Console.WriteLine($"{left} {right}");
}
輸出:
1 10
2 9
3 8
...
10 1
無限 for 迴圈
如果你真的很硬派(比如你在寫 IT 永動機),可以寫個「永遠」的 for 迴圈:
for (;;) // 沒有初始化、條件、變化
{
Console.WriteLine("工作、工作、再工作!");
}
無限
for 迴圈
注意: 這種迴圈只有在主體裡有 break、return 或 throw 才會結束。沒事不要亂用,不然你可能會喚醒古老惡魔 ——「程式沒回應」。
GO TO FULL VERSION