首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 語法基礎:循環結構語句詳細解析與實戰演練

     編輯:Java 相關知識

循環結構核心四要素

  1. 初始化語句:循環變數初始值 (如 int i = 0)
  2. 判斷條件:布林表達式,決定是否進入循環體
  3. 循環體語句:重複執行的業務邏輯
  4. 控制條件:更新循環變數,避免死循環

三大循環語句語法與流程對比

1. for 循環:已知範圍/次數首選

for (初始化; 判斷條件; 控制條件) {
    循環體;
}

執行順序:初始化 → 判斷 → 循環體 → 控制 → 判斷 → ...

經典範例:

// 1-100 偶數和
int sum = 0;
for (int i = 2; i <= 100; i += 2) sum += i;

// 5! 階乘
int fact = 1;
for (int i = 2; i <= 5; i++) fact *= i;

// 水仙花數 (三位數各位立方和等於自身)
for (int n = 100; n < 1000; n++) {
    int g = n % 10, s = n / 10 % 10, b = n / 100;
    if (g*g*g + s*s*s + b*b*b == n) System.out.println(n);
}

2. while 循環:未知次數、條件驅動

while (判斷條件) {
    循環體;
    控制條件; // 易忘,導致死循環
}

適用場景:如「紙疊幾次超過珠峰高度」——次數不可預知:

int count = 0;
int thickness = 1; // 0.01mm → 1 單位
int target = 884800; // 8848m → 884800 單位
while (thickness < target) {
    thickness *= 2;
    count++;
}
System.out.println("需疊 " + count + " 次"); // 輸出 27

3. do-while 循環:至少執行一次

do {
    循環體;
    控制條件;
} while (判斷條件);

典型用途:選單驅動程式、輸入驗證至少提示一次。

三種循環選擇指南

循環類型優先級適用場景變數作用域
for最高已知範圍、計次、陣列/集合遍歷循環變數僅在 for 內可見
while次之未知次數、條件驅動、讀取流直到 EOF變數外部可見,便於循環後使用
do-while最低至少執行一次、選單/輸入驗證同 while

巢狀循環與圖形輸出實戰

外層控制行,內層控制列

// 直角三角形 *
for (int row = 1; row <= 5; row++) {
    for (int col = 1; col <= row; col++) {
        System.out.print("*");
    }
    System.out.println(); // 換行
}

九九乘法表

for (int i = 1; i <= 9; i++) {
    for (int j = 1; j <= i; j++) {
        System.out.print(j + "*" + i + "=" + (i*j) + "\t");
    }
    System.out.println();
}

跳轉控制語句:break / continue / return

關鍵字作用範圍效果典型場景
break單層循環 / switch**完全跳出**該循環找到目標提前結束搜尋
continue單層循環**跳過本次**剩餘循環體,進入下一次判斷跳過特定條件繼續處理
return方法**結束整個方法**,返回調用處驗證失敗提前返回、找到結果返回

標籤配合 break 跳出多層循環

outer: for (int i = 0; i < 3; i++) {
    inner: for (int j = 0; j < 4; j++) {
        if (j == 2) break outer; // 直接跳出 outer 標籤的循環
        System.out.print("*");
    }
    System.out.println();
}

經典練習題:小芳存錢問題

/* 
每天存 2.5 元,每 5 天花 6 元,問幾天存滿 100 元?
*/
double daily = 2.5;
double total = 0;
int day = 1;
while (true) {
    total += daily;
    if (total >= 100) {
        System.out.println("第 " + day + " 天存滿 100 元");
        break;
    }
    if (day % 5 == 0) {
        total -= 6;
        System.out.println("第 " + day + " 天花費 6 元");
    }
    day++;
}

常見錯誤與除錯技巧

  • 死循環:忘寫控制條件、條件永真 → 加印出循環變數觀察
  • Off-by-one:邊界條件 <= vs < → 邊界值測試 (0, 1, n-1, n)
  • 變數遮蔽:內層循環重複宣告同名變數 → 善用 IDE 重構重命名
  • continue/break 誤用:在巢狀循環只跳出內層 → 使用標籤或重構提取方法
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved