在編程中,我們經常需要重複執行某段代碼。比如打印1到10的數字、計算1到100的和等。Java提供了while循環來實現這種“重複執行”的需求。while循環的核心思想是:只要條件滿足,就一直執行循環體,直到條件不滿足爲止。
一、while循環的基本語法¶
while循環的結構非常簡單,基本格式如下:
while (條件表達式) {
// 循環體:當條件爲true時執行的代碼
}
- 條件表達式:必須是一個布爾值(
true或false)。只有當條件爲true時,循環體纔會執行。 - 循環體:被重複執行的代碼塊(如果只有一行代碼,大括號
{}可以省略,但建議始終加上,避免錯誤)。
二、爲什麼需要循環?¶
假設要打印1到5這5個數字,不用循環的話,需要寫5行System.out.println():
System.out.println(1);
System.out.println(2);
System.out.println(3);
System.out.println(4);
System.out.println(5);
但如果要打印1到1000,手動寫1000行代碼顯然不現實。這時候while循環就能派上用場:只需要幾行代碼,就能自動重複執行。
三、實例1:打印1到5¶
需求:打印1到5這5個數字。
思路:
1. 定義一個變量i,初始化爲1(表示當前要打印的數字);
2. 用while循環判斷:只要i小於等於5,就執行打印;
3. 每次打印後,i自增1(否則i永遠是1,條件永遠成立,導致死循環)。
代碼:
public class WhileExample {
public static void main(String[] args) {
int i = 1; // 初始化變量i,從1開始
while (i <= 5) { // 條件:i是否小於等於5?
System.out.println(i); // 打印當前i的值
i++; // i自增1(關鍵!否則條件永遠成立,變成死循環)
}
}
}
輸出:
1
2
3
4
5
四、實例2:計算1到10的和¶
需求:計算1+2+3+…+10的總和。
思路:
1. 定義變量sum初始化爲0(用於累加結果);
2. 定義變量i初始化爲1(從1開始累加);
3. 用while循環:只要i小於等於10,就執行sum += i(累加當前i的值到sum),然後i自增1。
代碼:
public class SumExample {
public static void main(String[] args) {
int sum = 0; // 總和初始值爲0
int i = 1; // 從1開始累加
while (i <= 10) { // 條件:i是否小於等於10?
sum = sum + i; // 等價於 sum += i
i++; // i自增1,避免死循環
}
System.out.println("1到10的和是:" + sum); // 輸出結果
}
}
輸出:
1到10的和是:55
五、注意事項:避免死循環!¶
while循環最常見的錯誤是死循環——循環體永遠執行,導致程序無法結束。出現死循環的原因通常是:
1. 條件表達式永遠爲true:比如while (i <= 5)寫成了while (i < 5),但i從未自增,導致條件永遠成立。
2. 循環體內沒有修改條件的變量:比如i++忘記寫,導致i始終是1,條件永遠成立。
示例:死循環(錯誤示範):
int i = 1;
while (i <= 5) {
System.out.println(i);
// 錯誤!忘記寫i++,i永遠是1,條件永遠成立
}
解決辦法:確保循環體中包含能讓條件表達式最終變爲false的邏輯(比如i++)。
六、補充:do-while循環(擴展)¶
如果需要至少執行一次循環體(比如用戶輸入密碼,需要先輸入再判斷是否正確),可以用do-while循環。它的特點是:先執行循環體,再判斷條件。
語法:
do {
// 循環體(至少執行一次)
} while (條件表達式);
示例:
int i = 1;
do {
System.out.println(i);
i++;
} while (i <= 5); // 先執行循環體,再判斷條件(即使條件初始爲false,也會執行一次)
輸出:1、2、3、4、5(和while循環結果相同,但邏輯不同)。
七、總結¶
while循環用於條件滿足時重複執行代碼,核心是“先判斷,再執行”。- 語法結構:
while (條件) { 循環體 },必須確保循環體中修改條件,避免死循環。 - 關鍵場景:打印序列、累加求和、重複任務(如用戶輸入驗證)等。
多練習簡單的循環實例,比如打印1到100、計算1到100的和,就能熟練掌握while循環的使用啦!