1. 認識 do-while 迴圈
想像一下:你在寫一個讓程式猜使用者心裡想的數字的遊戲。你必須至少問一次數字,然後持續重複詢問,直到猜中為止。若是先檢查條件,一般的 while 可能根本不會進入迴圈。
這時 do-while 就派上用場了。與 while 不同,它一定會先執行一次迴圈本體——即使條件一開始就是假的。就像在收銀台不論是否購物都會拿到一塊口香糖一樣。
do-while 的語法
很簡單:在 Java 中就是另一組關鍵字。
do
{
// 迴圈本體:這段程式碼至少會執行一次
}
while (uslovie);
do-while 迴圈的語法
請注意分號 ; 在最後,位於條件括號之後!在一般的 while 裡沒有,但這裡要加——新手的經典陷阱。
do-while 迴圈的步驟說明
- 進入迴圈本體(一定至少一次)。
- 檢查條件。
- 若條件為真——重複執行本體。
- 若條件為假——離開迴圈。
2. 與一般的 while 的差異
回顧一下一般 while 的基本運作方式:
while (uslovie)
{
// 迴圈本體
}
如果一開始條件為假,迴圈本體一次也不會執行!
現在看看 do-while 的例子:
do
{
// 迴圈本體
}
while (uslovie);
即使條件一開始就是假的,迴圈本體也會至少執行一次!
用程式碼來說明差異:
// 一般的 while
int count = 0;
while (count > 0)
{
System.out.println("count = " + count);
count--;
}
// 不會輸出任何東西
// do-while
int count2 = 0;
do
{
System.out.println("count2 = " + count2);
count2--;
}
while (count2 > 0);
// 會輸出 "count2 = 0",即使條件為假!
有時這看起來像是「怪癖」,但在處理使用者輸入與資料驗證時,這正是我們所需要的行為。
3. do-while 的實務應用情境
這個迴圈最常用在哪些場景?
資料驗證
常見情境:請使用者輸入正確的資料(例如密碼不得少於 6 個字元),並在一切正確之前持續重複要求。
String password;
do
{
System.out.print("請輸入新密碼(至少 6 個字元):");
password = console.nextLine();
}
while (password.length() < 6);
System.out.println("密碼已接受!");
迴圈本體至少會執行一次——即使使用者立刻輸入了足夠長的密碼。
主控台應用程式中的選單
常見的模式:顯示選單、等待指令,只有收到特殊指令才結束。
String command;
do
{
System.out.println("選單:");
System.out.println("1. 顯示問候語");
System.out.println("2. 退出");
System.out.print("請選擇動作:");
command = console.nextLine();
if (command.equals("1"))
{
System.out.println("你好,世界!");
}
else if (!command.equals("2"))
{
System.out.println("未知的指令。");
}
}
while (!command.equals("2"));
System.out.println("再見!");
4. 表格:比較 while 與其他迴圈
| 迴圈類型 | 條件檢查時機 | 本體可能執行次數 | 適用場合 |
|---|---|---|---|
|
事前 | 0 次或以上 | 當重複次數事先未知時 |
|
事後 | 1 次或以上 | 當至少執行一次本體很重要時 |
|
事前 | 0 次或以上 | 當迭代次數已知時 |
GO TO FULL VERSION