Java for 迴圈

for 迴圈用於重複執行程式碼,適合已知執行次數的情況。

基本語法

for (初始化; 條件; 更新) {
    // 迴圈主體
}

基本範例

// 印出 1 到 5
for (int i = 1; i <= 5; i++) {
    System.out.println(i);
}
// 1, 2, 3, 4, 5

執行流程

for (int i = 0; i < 3; i++) {
    System.out.println("i = " + i);
}
  1. 初始化:int i = 0(只執行一次)
  2. 檢查條件:i < 3(true,執行迴圈主體)
  3. 執行主體:印出 i = 0
  4. 更新:i++(i 變成 1)
  5. 回到步驟 2,重複直到條件為 false

遞減迴圈

// 從 5 倒數到 1
for (int i = 5; i >= 1; i--) {
    System.out.println(i);
}
// 5, 4, 3, 2, 1

不同的步進值

// 每次增加 2
for (int i = 0; i <= 10; i += 2) {
    System.out.println(i);
}
// 0, 2, 4, 6, 8, 10

// 每次增加 3
for (int i = 0; i < 15; i += 3) {
    System.out.println(i);
}
// 0, 3, 6, 9, 12

遍歷陣列

int[] numbers = {10, 20, 30, 40, 50};

for (int i = 0; i < numbers.length; i++) {
    System.out.println("numbers[" + i + "] = " + numbers[i]);
}

for-each 迴圈(增強型 for)

遍歷陣列或集合的簡潔寫法:

int[] numbers = {10, 20, 30, 40, 50};

for (int num : numbers) {
    System.out.println(num);
}

詳細說明請參考 Java for-each 迴圈

巢狀迴圈

// 九九乘法表
for (int i = 1; i <= 9; i++) {
    for (int j = 1; j <= 9; j++) {
        System.out.printf("%d x %d = %2d  ", i, j, i * j);
    }
    System.out.println();
}

實際應用

計算總和

int sum = 0;
for (int i = 1; i <= 100; i++) {
    sum += i;
}
System.out.println("1 到 100 的總和:" + sum);  // 5050

計算階乘

int n = 5;
long factorial = 1;

for (int i = 1; i <= n; i++) {
    factorial *= i;
}

System.out.println(n + "! = " + factorial);  // 5! = 120

找出最大值

int[] numbers = {23, 45, 12, 67, 34};
int max = numbers[0];

for (int i = 1; i < numbers.length; i++) {
    if (numbers[i] > max) {
        max = numbers[i];
    }
}

System.out.println("最大值:" + max);  // 67

印出圖形

// 印出三角形
int rows = 5;
for (int i = 1; i <= rows; i++) {
    for (int j = 1; j <= i; j++) {
        System.out.print("* ");
    }
    System.out.println();
}
// *
// * *
// * * *
// * * * *
// * * * * *

反轉陣列

int[] arr = {1, 2, 3, 4, 5};

for (int i = 0; i < arr.length / 2; i++) {
    int temp = arr[i];
    arr[i] = arr[arr.length - 1 - i];
    arr[arr.length - 1 - i] = temp;
}
// arr = {5, 4, 3, 2, 1}

無限迴圈

// 無限迴圈
for (;;) {
    // 需要 break 來跳出
    if (condition) {
        break;
    }
}

省略部分

int i = 0;
for (; i < 5;) {  // 省略初始化和更新
    System.out.println(i);
    i++;
}

多個變數

for (int i = 0, j = 10; i < j; i++, j--) {
    System.out.println("i=" + i + ", j=" + j);
}
// i=0, j=10
// i=1, j=9
// i=2, j=8
// i=3, j=7
// i=4, j=6

break 和 continue

// break:跳出迴圈
for (int i = 1; i <= 10; i++) {
    if (i == 5) break;
    System.out.println(i);
}
// 1, 2, 3, 4

// continue:跳過本次迴圈
for (int i = 1; i <= 10; i++) {
    if (i % 2 == 0) continue;  // 跳過偶數
    System.out.println(i);
}
// 1, 3, 5, 7, 9

詳細說明請參考 Java break continue