4-3 for

寫程式時,常常會需要連續處理相同或相近的事情多次。
這時候就需要用到迴圈。

for 迴圈的格式:

for ( <初始設定>; <持續條件>; <迭代式>) {

}

初始設定式

每次進入 for 迴圈,都會先執行初始設定式一次。
初始設定式可以是下列 2 個項目的其中一項,也可以不寫:
1. 迴圈內部的變數宣告與初始化
2. 以下任意數量的陳述式與運算式:
● 指派數值
● 方法呼叫
● 遞增或遞減運算
● 使用 new 關鍵字建立物件

持續條件

每次要執行迴圈主體之前,都會先檢查持續條件是否成立。
由於是「條件」,所以內容一定要是回傳 bool 的運算式,但也可以不設定條件。
如果不設定條件,或是 bool 運算式回傳true,則執行迴圈主體;否則,離開迴圈。

迭代式

每次完成迴圈主體一次,都會執行迭代式一次,然後繼續檢查是否達成持續條件。
迭代式可以是下列 2 個項目的其中一項,也可以不寫:
(內容與初始設定式相同)
1. 迴圈內部的變數宣告與初始化
2. 以下任意數量的陳述式與運算式:
● 指派數值
● 方法呼叫
● 遞增或遞減運算
● 使用 new 關鍵字建立物件

for 迴圈適合用來處理重複的事情。以下例子重複印出 “Hello World!” 字串 5 次。

for 迴圈有迭代式,因此也很適合用來依序處理陣列。以下為使用 for 迴圈來依序處理陣列的每個元素的例子。

注意 for 迴圈的3個式子都是可選選項,也就是說可以都不寫。以下是個比較極端的例子:

以上的例子由於沒有持續條件,因此永遠被當成通過條件,因此會成為無限迴圈
雖然有時也會需要無限重複執行的行為,但無限迴圈使用不當會造成程式卡死,
因此都還是會建議留下某個條件來中斷迴圈。

練習題

1. 請使用for迴圈建立以下6*5的二維int陣列 (使用 int[,] ),
然後將內容其印出如下。
(Hint: 使用格式字串時,將原本對應數值順序的{a},改成 {a, b} 就可以做對齊,以下結果用的 b 值是 4 )

2. 隨機產生長度 0~20 之間的 int[],並隨機產生內部數值,將結果印出。

3. 承上方法隨機產生 1 個長度0~20之間的 int[],並將此陣列由小到大排序。將排序前與排序後的結果印出。

4. 承上方法隨機產生 2 個長度0~20之間的 int[],將第 1 個陣列的數值全數複製到第 2 個陣列,超出範圍的部分不理會。將第 1 個陣列及執行複製前後的第 2 個陣列印出。