Java之while與do-while循環(huán)的用法詳解
一. while循環(huán)
1. 基本語法
while循環(huán)的基本語法如下所示:
while(循環(huán)條件){ //循環(huán)體 }
while循環(huán)屬于是一種 ”當(dāng)型“的循環(huán)結(jié)構(gòu),當(dāng)循環(huán)條件為true,循環(huán)體就會執(zhí)行,不滿足條件,循環(huán)體一次也不會執(zhí)行。所以在while循環(huán)中,當(dāng)執(zhí)行到一定的程度后,循環(huán)條件要變成false,否則就會變成”死循環(huán)“。死循環(huán)會導(dǎo)致CPU被100%占用,用戶會感覺電腦運行緩慢,所以我們要避免編寫死循環(huán)代碼。另外如果循環(huán)條件的邏輯寫得有問題,也可能會造成意料之外的結(jié)果。
大家還要注意,在while循環(huán)中,也是可以進行嵌套其他循環(huán)的!
2. 執(zhí)行順序
根據(jù)while循環(huán)的基本語法,給大家梳理一下它的執(zhí)行順序:
如果while循環(huán)里的條件為true,則執(zhí)行循環(huán)體;
循環(huán)體執(zhí)行完畢后,會再次判斷循環(huán)條件......;
直到循環(huán)條件為false,就結(jié)束循環(huán)。
3. 代碼案例
接下來我們就通過幾個案例來學(xué)習(xí)while循環(huán)的使用。
3.1 案例一
需求:用while循環(huán)打印100遍“跟壹壹哥學(xué)Java”
/** * @author */ public class Demo05 { public static void main(String[] args) { // while循環(huán) //打印100遍“跟壹壹哥學(xué)Java” int i = 0; while (i < 100) { System.out.println("跟壹壹哥學(xué)Java"+i); //注意要更改i的值,否則條件就用于為真,這就成了死循環(huán)了 i++; } } }
3.2 案例二
需求:用while循環(huán)計算1-100的累加和
/** * @author */ public class Demo05 { public static void main(String[] args) { // while循環(huán) //計算1~100的和 int j = 1; int sum = 0; while(j < 101){ sum = sum + j; j++; } System.out.println(sum); } }
3.3 擴展案例
需求:計算一個數(shù)是幾位數(shù)?
實現(xiàn)思路:如果我們要想實現(xiàn)這個需求,可以將該數(shù)循環(huán)除以10,并用一個數(shù)字記錄一共運算了幾次。
/** * @author */ public class Demo06 { public static void main(String[] args) { // while循環(huán) // 計算一個數(shù)是幾位數(shù)? 實現(xiàn)思路:將該數(shù)循環(huán)除以10,記錄運算了幾次 int num = 12345; int temp = num; if (num == 0) { System.out.println(num + "是1位數(shù)"); } else { // 定義一個變量,用于保存循環(huán)的次數(shù) int count = 0; while (num != 0) { // 將這個數(shù)循環(huán)除以10 num = num / 10; // 每次循環(huán)次數(shù)+1 count++; } System.out.println(temp + "是" + count + "位數(shù)"); } } }
二. do-while循環(huán)
對while循環(huán)而言,如果不滿足條件,就不能進入循環(huán)。但有時我們需要即使不滿足條件,也要至少執(zhí)行一次,這時就可以考慮使用do-while循環(huán)了。do…while循環(huán)和while循環(huán)功能相似,不同的是,do…while循環(huán)至少會執(zhí)行一次。
1. 基本語法
do-while循環(huán)的基本語法如下:
do{ //循環(huán)體 }while(循環(huán)條件);
do-while循環(huán)屬于是一種 ”直到型“的循環(huán)結(jié)構(gòu)。因為循環(huán)條件是在循環(huán)體的后面,所以循環(huán)體在判斷循環(huán)條件之前已經(jīng)執(zhí)行一次了。如果循環(huán)條件的值為true,則循環(huán)體會一直執(zhí)行,直到循環(huán)條件的值為false,就結(jié)束循環(huán)。
大家注意:在do-while循環(huán)中,也是可以進行嵌套其他循環(huán)的!
2. 執(zhí)行順序
根據(jù)do-while循環(huán)的基本語法,給大家梳理一下它的執(zhí)行順序:
先執(zhí)行一次循環(huán)體;
如果while循環(huán)里的條件為true,則繼續(xù)執(zhí)行循環(huán)體;
當(dāng)循環(huán)體執(zhí)行完畢后,會再次判斷循環(huán)條件......;
直到循環(huán)條件為false,就結(jié)束循環(huán)。
3. 代碼案例
3.1 案例一
需求:用do-while循環(huán)打印100遍"跟一一哥學(xué)編程"。
/** * @author */ public class Demo06 { public static void main(String[] args) { // do-while循環(huán) // 案例:打印100遍"跟一一哥學(xué)編程" int i = 1; do { //循環(huán)體至少會執(zhí)行一次 System.out.println("跟一一哥學(xué)編程"+i); //更改i變量的值 i++; } while (i <= 100); } }
3.2 案例二
需求:學(xué)生根據(jù)老師的評語,決定是否繼續(xù)敲代碼,直到測評為ok,就結(jié)束。
/** * @author */ public class Demo06 { public static void main(String[] args) { // do-while循環(huán) //案例:學(xué)生根據(jù)老師的評語,是否繼續(xù)敲代碼,直到測評結(jié)果為ok才結(jié)束。 Scanner sc = new Scanner(System.in); String result; do{ System.out.println("敲代碼ing...你看我的代碼怎么樣???"); System.out.println("評價:"); //獲取屏幕上輸入的文本內(nèi)容 result = sc.next(); }while(!result.equals("ok")); } }
三. 結(jié)語
至此,就把while和do-while兩種循環(huán)的使用給大家講解完畢了,現(xiàn)在你學(xué)會了嗎?那么兩者之間有什么區(qū)別呢?
1. while與do-while的區(qū)別
這里把while與do-while循環(huán)的區(qū)別,給大家簡單總結(jié)一下:
- 語法格式的區(qū)別:
- 執(zhí)行次序不同;
- 當(dāng)初始循環(huán)條件不滿足時,while循環(huán)一次都不會執(zhí)行;do-while循環(huán)至少會執(zhí)行一次。
2. 三種循環(huán)的對比
我們現(xiàn)在已經(jīng)把for、while、do-while循環(huán)都學(xué)完了,它們?nèi)咧g又有哪些區(qū)別呢?
2.1 從執(zhí)行順序來看
- for、while:先判斷,后執(zhí)行;
- do-while:先執(zhí)行,后判斷;
2.2 從適用場景來看
- 當(dāng)循環(huán)次數(shù)確定時,一般使用for循環(huán);
- 循環(huán)次數(shù)不確定時,一般使用while或do-while循環(huán)。
以上就是Java之while與do-while循環(huán)的用法詳解的詳細(xì)內(nèi)容,更多關(guān)于Java while與do-while循環(huán)的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
使用mybatis log plugin插件展示出數(shù)據(jù)庫查詢語句方式
本文介紹了如何安裝和配置MyBatis日志插件,包括集成log4j、配置log4j.xml文件和在application.properties中添加數(shù)據(jù)庫打印配置,通過這些步驟,可以在調(diào)試時查看預(yù)編譯的數(shù)據(jù)庫語句和實際查詢語句2024-11-11簡單快速對@RequestParam聲明的參數(shù)作校驗操作
這篇文章主要介紹了簡單快速對@RequestParam聲明的參數(shù)作校驗操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08SpringBoot實現(xiàn)服務(wù)接入nacos注冊中心流程詳解
這篇文章主要介紹了SpringBoot實現(xiàn)服務(wù)接入nacos注冊中心流程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-01-01MyEclipse如何將項目的開發(fā)環(huán)境與服務(wù)器的JDK 版本保持一致
我們使用MyEclipse開發(fā)Java項目開發(fā)中,偶爾會遇到因項目開發(fā)環(huán)境不協(xié)調(diào),導(dǎo)致這樣那樣的問題,在這里以把所有環(huán)境調(diào)整為JDK1.6 為例,給大家詳細(xì)介紹MyEclipse如何將項目的開發(fā)環(huán)境與服務(wù)器的JDK 版本保持一致,需要的朋友參考下吧2024-04-04