Java while和do while迴圈詳解
迴圈是程式中的重要流程結構之一。迴圈語句能夠使程式程式碼重複執行,適用於需要重複一段程式碼直到滿足特定條件為止的情況。
所有流行的程式語言中都有迴圈語句。
ava
中採用的迴圈語句與C語言中的迴圈語句相似,主要有 while、do-while 和 for。另外 Java 5 之後推出了 for-each 迴圈語句,for-each 迴圈是 for 迴圈的變形,它是專門為集合遍歷而設計的。for-each 並不是一個關鍵字。
迴圈語句可以在滿足迴圈條件的情況下,反覆執行某一段程式碼,這段被重複執行的程式碼被稱為迴圈體。當反覆執行這個迴圈體時,需要在合適的時候把迴圈條件改為假,從而結束迴圈,否則迴圈將一直執行下去,形成死迴圈。
迴圈語句可能包含如下 4 個部分。
- 初始化語句(init statement): 一條或多條語句,這些語句用於完成一些初始化工作,初始化語句在迴圈開始之前執行。
- 迴圈條件(test_expression):這是一個 boolean 表示式,這個表示式能決定是否執行迴圈體。
- 迴圈體(body_statement):這個部分是迴圈的主體,如果迴圈條件允許,這個程式碼塊將被重複執行。如果這個程式碼塊只有一行語句,則這個程式碼塊的花括號是可以省略的。
- 迭代語句(iteration_statement):這個部分在一次迴圈體執行結束後,對迴圈條件求值之前執行,通常用於控制迴圈條件中的變數,使得迴圈在合適的時候結束。
while 語句
while 語句是 Java 最基本的迴圈語句,是一種先判斷的迴圈結構,可以在一定條件下重複執行一段程式碼。該語句需要判斷一個測試條件,如果該條件為真,則執行迴圈語句(迴圈語句可以是一條或多條),否則跳出迴圈。
while 迴圈語句的語法結構如下:
while(條件表示式) { 語句塊; }
其中語句塊中的程式碼可以是一條或者多條語句,而條件表示式是一個有效的 boolean 表示式,它決定了是否執行迴圈體。當條件表示式的值為 true 時,就執行大括號中的語句塊。
執行完畢,再次檢查表示式是否為 true,如果還為 true,則再次執行大括號中的程式碼,否則就跳出迴圈,執行 while 迴圈之後的程式碼。圖 1 表示了 while 迴圈語句的執行流程。
圖 1 while 迴圈語句執行流程圖
例 1
使用 while 語句計算 10 的階乘,其具體程式碼如下所示。
public static void main(String[] args) {int i = 1;int n = 1;while(i <= 10) {n=n*i;i++;}System.out.println("10的階乘結果為:"+n);}
在上述程式碼中,定義了兩個變數 i 和 n,迴圈每執行一次 i 值就加 1,判斷 i 的值是否小於等於 10,並利用 n=n*i 語句來實現階乘。當 i 的值大於 10 之後,迴圈便不再執行並退出迴圈。
執行程式,執行的結果如下所示:
10 的階乘結果為:3628800
do-while 語句
如你剛才所見,如果 while 迴圈一開始條件表示式就是假的,那麼迴圈體就根本不被執行。然而,有時需要在開始時條件表示式即使是假的情況下,while 迴圈至少也要執行一次。換句話說,有時你需要在一次迴圈結束後再測試中止表示式,而不是在迴圈開始時。
幸運的是,Java就提供了這樣的迴圈:do-while迴圈。do-while 迴圈語句也是 Java 中運用廣泛的迴圈語句,它由迴圈條件和迴圈體組成,但它與 while 語句略有不同。
do-while 迴圈語句的特點是先執行迴圈體,然後判斷迴圈條件是否成立。
do-while 語句的語法格式如下:
do { 語句塊; }while(條件表示式);
以上語句的執行過程是,首先執行一次迴圈操作,然後再判斷 while 後面的條件表示式是否為 true,如果迴圈條件滿足,迴圈繼續執行,否則退出迴圈。while 語句後必須以分號表示迴圈結束,其執行流程如圖 2 所示。
圖 2 do-while 迴圈語句的執行流程
例 2
編寫一個程式,計算 10 的階乘。使用 do-while 迴圈的實現程式碼如下所示。
public static void main(String[] args) {int number = 1,result = 1;do {result*=number;number++;}while(number <= 10);System.out.print("10階乘結果是:"+result);}
程式執行後輸出結果如下:
10 階乘結果是:3628800
例 3
在一個圖書系統的推薦圖書列表中儲存了 50 條資訊,現在需要讓它每行顯示 10 條,分 5 行進行顯示。下面使用 do-while 迴圈語句來實現這個效果,其具體程式碼如下所示。
public static void main(String[] args) {int bookIndex = 1;do {System.out.print(bookIndex+"\t");if(bookIndex%10 == 0) {System.out.println();}bookIndex++;}while(bookIndex<51);}
在上述程式碼中, 宣告一個變數 bookIndex 用來儲存圖書的索引,該變數賦值為 1 表示從第一本開始。在 do-while 迴圈體內,首先輸出了 bookIndex 的值,然後判斷 bookIndex 是否能被 10 整除,如果可以則說明當前行已經輸出 10 條,用 System.out.println() 語句輸出了一個換行符。之後使 bookIndex 加 1,相當於更新當前的索引。最後在 while 表示式中判斷是否超出迴圈的範圍,即 50 條以內。
執行程式,執行的結果如下所示。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
while和do-while的比較
while 迴圈和 do-while 迴圈的相同處是:都是迴圈結構,使用 while(迴圈條件) 表示迴圈條件,使用大括號將迴圈操作括起來。
while 迴圈和 do-while 迴圈的不同處如下:
- 語法不同:與 while 迴圈相比,do-while 迴圈將 while 關鍵字和迴圈條件放在後面,而且前面多了 do 關鍵字,後面多了一個分號。
- 執行次序不同:while 迴圈先判斷,再執行。do-while 迴圈先執行,再判斷。
- 一開始迴圈條件就不滿足的情況下,while 迴圈一次都不會執行,do-while 迴圈則不管什麼情況下都至少執行一次。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70007056/viewspace-2846763/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java 迴圈 - for, while 及 do…whileJavaWhile
- while迴圈以及do while迴圈While
- Java迴圈結構-for,while及do…whileJavaWhile
- Java 迴圈結構 - for, while 及 do...whileJavaWhile
- C語言——迴圈結構(for迴圈,while迴圈,do-while迴圈)C語言While
- Java基礎 迴圈語句 for while do.....while語句JavaWhile
- C語言程式設計學習中while迴圈和do……while迴圈C語言程式設計While
- Object-C,迴圈語句for,while,do-whileObjectWhile
- C#練習,應用for,while,do-while迴圈C#While
- while迴圈和do迴圈、緩衝區、一維陣列While陣列
- while迴圈While
- plsql_迴圈結構_do while_do unitl_while loop_end loop測試(一)SQLWhileOOP
- PHP For & While 迴圈PHPWhile
- java學習之while迴圈JavaWhile
- Java:運用while()與do....while與for()JavaWhile
- java死迴圈while(true)vsfor(;;)JavaWhile
- python while迴圈PythonWhile
- linux while 迴圈LinuxWhile
- while迴圈補充While
- 實驗5 迴圈結構程式設計(while、do-while語句的應用)程式設計While
- 實驗5迴圈結構程式設計(while、do-while語句的應用)程式設計While
- C#程式設計基礎第七課:C#中的基本迴圈語句:while迴圈、do-while迴圈、for迴圈、foreach迴圈的使用C#程式設計While
- 碎片化學習Java(二十五)Java do while迴圈計算 1 到 10 的和JavaWhile
- do-while語句和while的區別While
- 實驗三:分別用for、while和do-while迴圈語句以及遞迴方法計算n!,並輸出算式While遞迴
- 04流程控制 for迴圈,while迴圈While
- JavaScript中的while迴圈JavaScriptWhile
- python-while迴圈PythonWhile
- 你只用do-while來實現迴圈?太浪費了!While
- 善用 do-whileWhile
- Python 為什麼不設計 do-while 迴圈結構?PythonWhile
- c#入門-while迴圈C#While
- mysql 中 while 迴圈的用法。MySqlWhile
- python 基礎習題6--for迴圈和while迴圈PythonWhile
- 五、使用者輸入和while迴圈While
- JavaScript 流程控制語句詳解:if語句、switch語句、while迴圈、for迴圈等JavaScriptWhile
- c# while-do while-foreach-if-gotoC#WhileGo
- ruby 怪異的while迴圈處理,和java的差別WhileJava