150天打卡day07_循環(huán)結(jié)構(gòu)
今日內(nèi)容
while循環(huán)結(jié)構(gòu)
do_while循環(huán)結(jié)構(gòu)
for循環(huán)結(jié)構(gòu)
循環(huán)嵌套
循環(huán)控制
while循環(huán)
定義:在滿足條件的情況下,讓計算機(jī)重復(fù)執(zhí)行定義好的代碼。
應(yīng)用:while 用于實現(xiàn)控制語句中的循環(huán)結(jié)構(gòu)
語法結(jié)構(gòu)
while 語句的執(zhí)行邏輯
計算boolean表達(dá)式的值,如果值為true則執(zhí)行語句塊。
語句塊執(zhí)行完后再次判斷boolean表達(dá)式的值
如果為true則繼續(xù)執(zhí)行語句塊,如此循環(huán)往復(fù)
直到boolean為false時退出while循環(huán)
while語句的流程圖

案例
注意:一般情況下,循環(huán)操作中會存在使得循環(huán)條件不滿足的可能性,否則該循環(huán)將成為“死循環(huán)”。
定義:“死循環(huán)”意味著會一直執(zhí)行循環(huán)體操作,循環(huán)后面的語句永遠(yuǎn)不會被執(zhí)行,“死循環(huán)”在軟件系統(tǒng)中是需要避免的。
循環(huán)四要素
【1】初始化變量、【2】條件、【3】循環(huán)語句、【4】改變量
注意
1、初始化變量只執(zhí)行一次
2、循環(huán)體和迭代變量只有在循環(huán)條件==true才執(zhí)行
break關(guān)鍵字
break用在循環(huán)體中用于退出循環(huán)
案例1
當(dāng)x==5時,執(zhí)行break語句直接退出循環(huán)結(jié)構(gòu)了
案例2
continue語句 ? 繼續(xù)
1.只能用到循環(huán)中
2.作用:跳過循環(huán)體中的剩余語句而執(zhí)行下一次循環(huán)
案例:酒桌查7和可以被7整除的數(shù)跳過
do-while循環(huán)
do-while語句的執(zhí)行邏輯
do-while語句也是循環(huán)的一種常見語法結(jié)構(gòu),語法如下:
do { 語句塊 } while( boolean表達(dá)式 ) ;
執(zhí)行過程為:
先執(zhí)行語句塊
再計算boolean表達(dá)式的值,如果為true,再次執(zhí)行語句塊。如此循環(huán)往復(fù),直到boolean表達(dá)式的值為false為止
注意:?無論boolean表達(dá)式是否為true,都要先執(zhí)行一次語句塊。
do-while語句的流程圖

案例1.先讓手動輸入密碼,然后再進(jìn)行判斷
先手動輸入密碼
然后判斷輸入的密碼是否不等于123456,如果為true,則繼續(xù)輸入,直到輸入的密碼為123456時,循環(huán)結(jié)束
循環(huán)條件在后面,使用do-while循環(huán)
上面的語句執(zhí)行過程如下,首先聲明整型變量pwd,在do語句中提示“請輸入密碼”,接收用戶輸入的數(shù)據(jù)賦給pwd, 而后判斷123456是否不等于pwd,若為true則執(zhí)行do語句塊,以此類推,直到123等于pwd時,循環(huán)結(jié)束。
案例2:猜數(shù)字
程序隨機(jī)生成并存儲一個100以內(nèi)的整數(shù)
用戶輸入一個整數(shù),程序給出與存儲的數(shù)字"大"或者"小"的比較結(jié)果提示,直到用戶猜對數(shù)字為止
do-while和while循環(huán)的區(qū)別
while與do-while都是用于執(zhí)行不定次數(shù)循環(huán),區(qū)別在于
while循環(huán)先判斷再執(zhí)行
do-while循環(huán)先執(zhí)行一次,再判斷。
那么,當(dāng)初始情況不滿足循環(huán)條件時,while循環(huán)就一次都不會執(zhí)行,而do-while循環(huán)不管任何情況都至少會執(zhí)行一次。

for循環(huán)
for循環(huán)的執(zhí)行邏輯
定義:for循環(huán)是最常用的循環(huán)流程控制,for循環(huán)是萬能循環(huán)。
for語句是循環(huán)中最常用的一種方式。
作為計次循環(huán)使用的時候,關(guān)鍵要找到4個要素
初始化
循環(huán)條件
遞增
循環(huán)體
語法如下:
可以看出,for循環(huán)的三個表達(dá)式之間通過分號“;”進(jìn)行分隔
執(zhí)行邏輯
計算表達(dá)式1的值,通常為循環(huán)變量賦初值;
計算表達(dá)式2(表達(dá)式2為邏輯表達(dá)式)的值,即判斷循環(huán)條件是否為真,若值為真則執(zhí)行循環(huán)體一次(語句塊),否則跳出循環(huán);
執(zhí)行循環(huán)體;
計算表達(dá)式3的值,此處通常寫更新循環(huán)變量的賦值表達(dá)式;
計算表達(dá)式2的值,若值為true則執(zhí)行循環(huán)體,否則跳出

案例1:使用for循環(huán)輸出1到10的值
循環(huán)變量的初始值 int i = 1
循環(huán)條件 i<=10
遞增條件 i++
循環(huán)體 輸出i
執(zhí)行順序:
首先,初始化i的值為1,判斷i是否小于等于10,結(jié)果為true
其次,輸出i的值1
然后,執(zhí)行i的自增1,再判斷i是否小于等于10,結(jié)果為true,執(zhí)行輸出i的值2
以此類推,輸出i的值10后,執(zhí)行i的自增1,此為i為11,判斷結(jié)果為false,程序終止。

案例2:計算1+2+3+.......+100的和

先聲明一個變量用于保存累加和
從1開始增到100
上面代碼的執(zhí)行過程:
首先,聲明一個變量用于保存累加和,此變量命名為sum,賦初始值為0
而后,for循環(huán)從1開始,每次增1,執(zhí)行100次,循環(huán)體中將i的值累加到sum變量中。
注意:?每次都是在sum的基礎(chǔ)之上加上i,所以使用了sum += i。循環(huán)結(jié)束后,輸出結(jié)果
練習(xí):求100以內(nèi)的偶數(shù)和
三種循環(huán)的對比

for語句三個表達(dá)式特殊用法
表達(dá)式1位置為空時:
分析:雖然省略了表達(dá)式1,但只是將它放在了for循環(huán)的外面進(jìn)行聲明,只是位置不同而已。
注意:即使for語句中不寫表達(dá)式1了,表達(dá)式2前面的分號;也不能省略。
表達(dá)式2的位置為空時:
for循環(huán)可以省略循環(huán)條件,循環(huán)條件省略后,當(dāng)需要結(jié)束循環(huán)的時候,可以利用break退出循環(huán)
表達(dá)式3的位置為空時:
分析:雖然省略了表達(dá)式3,但是仍然把表達(dá)式3放在了for循環(huán)中,只是位置不同,?
注意:即使for語句中不寫表達(dá)式3了,表達(dá)式2后面的分號;也不能省略。
表達(dá)式1,2,3位置均為空時:
分析:如上代碼沒有循環(huán)變量、沒有條件控制,因此會造成死循環(huán),而死循環(huán)在編寫程序過程中是必須要避免的,可以在循環(huán)體中添加break跳出循環(huán)。
表達(dá)式1和3的位置內(nèi)容多樣化
for循環(huán)中可以定義多個循環(huán)變量,好處是可以控制多個變量的作用域,使變量只在for循環(huán)內(nèi)部有效
逗號表達(dá)式:
Java逗號也是運算符,多個表達(dá)式用逗號連接構(gòu)成逗號表達(dá)式
本質(zhì)上是將for循環(huán)表達(dá)式看成了逗號表達(dá)式
定義:for語句中的三個表達(dá)式中?表達(dá)式1和表達(dá)式3可以使用逗號表達(dá)式,逗號表達(dá)式就是通過”,”運算符隔開的多個表達(dá)式組成的表達(dá)式,從左向右進(jìn)行計算。
注意:初始化變量和改變的量可以有多個,用逗號隔開,但是循環(huán)條件只能有一個
執(zhí)行邏輯如下:
初始設(shè)置i為1,j為6,判斷i是否小于等于6,為真執(zhí)行循環(huán)體
而后執(zhí)行i+=2,j-=2,即:i增2,j減2。
再判斷i是否小于等于6,為真繼續(xù)執(zhí)行循環(huán)體
以此類推,直到條件為false。
循環(huán)嵌套
定義:循環(huán)嵌套是指在一個完整的循環(huán)語句中再定義一個完整的循環(huán)語句的語法結(jié)構(gòu)。
應(yīng)用:?while、do.. while和for循環(huán)語句都可以進(jìn)行嵌套,并且他們之間可以進(jìn)行互相嵌套。最常見的是在for循環(huán)中嵌套for循環(huán)。
案例01
在控制臺上打印一個五行五列的矩形,如下圖所示。

案例2:

打印直角三角形
案例03:打印99乘法表

歡迎??點贊+關(guān)注,學(xué)習(xí)編程不迷路,筆芯?~
