国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Day 4 : 循環結構(while、do…while、for)

2019-11-14 21:10:18
字體:
來源:轉載
供稿:網友
Day 4 : 循環結構(while、do…while、for)1. 循環結構(while、do…while、for)

1.1. 什么是循環結構

在日常生活中,會有很多需要反復執行的事情,比如:每一年的4個季節,每一周的7天,每日的3餐,打印機每份文檔打印50份,一圈跑道400米跑3圈,都是在反復執行的。

再看軟件系統中的需求:

問題1:輸出100行語句,每行語句都一樣,即:

  • 行動是成功的階梯,行動越多,登得越高!
  • 行動是成功的階梯,行動越多,登得越高!
  • 行動是成功的階梯,行動越多,登得越高!

問題2:輸出100行語句,每行語句都類似,即:

  • 第1,行動是成功的階梯,行動越多,登得越高!
  • 第2,行動是成功的階梯,行動越多,登得越高!
  • 第3,行動是成功的階梯,行動越多,登得越高!
  • 第100,行動是成功的階梯,行動越多,登得越高!

問題3:計算1到50乘以8.88的結果

  • 1× 8.88 =8.88
  • 2 × 8.88 =17.76
  • 3 × 8.88 =26.64
  • 4 × 8.88 =35.52
  • 50 × 8.88 =444

諸如此類問題都是在反復執行的,在軟件系統中可以通過循環這種語法結構來解決。循環是程序設計語言中反復執行某些代碼的一種計算機處理過程, 是一組相同或相似語句被有規律的重復性執行。

對于循環來說,需要考慮兩個要素,其一要素為循環體, 也就是被反復執行的相同或相似的語句,其二要素為循環的條件,也就是循環得以繼續執行下去的條件,常常以循環次數的方式體現。

常用的循環結構有:while、do-while、for。

1.2. while語句

1.2.1. while語句的執行邏輯

while語句是循環的一種常見語法結構,語法如下:

while( boolean表達式 ) {        語句塊;}

while語句的執行過程為,首先計算boolean表達式的值,而后進行判斷,若值為true則執行語句塊,語句塊執行完后再次判斷boolean表達式的值,如果為true則繼續執行語句塊,如此循環往復,直到boolean表達式的值為false時退出while循環而執行while之后的語句。

1.2.2. while語句的流程圖

while語句的流程圖如圖 - 11所示,需要注意的是,一般情況下,循環操作中會存在使得循環條件不滿足的可能性,否則該循環將成為“死循環”。“死循環”意味著會一直執行循環體操作,循環后面的語句永遠不會被執行,“死循環”在軟件系統中是需要避免的。

圖 - 11

1.2.3. while語句用于處理循環邏輯

while語句在實際應用中應用比較廣泛,通過如下示例體會while語句的執行邏輯:

int age = 1;while (age<=100) {System.out.PRintln(“馬上有錢”);age++;}

上面的語句執行過程如下,首先聲明整型變量age并賦初始值為1,而后判斷age是否小于等于100,條件為真,輸出“馬上有錢”并將age的值增1變為2,再次判斷條件,此時age為2,依然小于100,再一次輸出“馬上有錢”并將age的值再增1變為3,以此類推,直到age等于101時,判斷條件為false,循環結束。

1.2.4. 使用break語句跳出循環

break用在循環體中用于退出循環結構。看如下示例代碼:

int x = 0;while ( x < 10 ) {        if ( 5 == x )    {            break;    }        System.out.println(x);        x + + ;}

分析上面的代碼得出結論,輸出結果為0 1 2 3 4,因為當x等于5時執行break語句直接退出循環結構了,即if語句塊后面的輸出x的值以及x++不再被執行。

1.3. do-while語句

1.3.1. do-while語句的執行邏輯

do-while語句也是循環的一種常見語法結構,語法如下:

do {        語句塊} while( boolean表達式 ) ;

do-while語句的執行過程為,先執行語句塊,再判斷boolean表達式,如果為true則再次執行語句塊,如此循環往復,直到boolean表達式的值為false時止。也就是說,do-while語句,無論boolean表達式是否為true,都先執行一次語句塊。

1.3.2. do-while語句的流程圖

do-while語句的流程圖如圖 - 12所示,與while語句一樣,do-while語句也要避免“死循環”的發生。

圖- 12

1.3.3. do-while語句用于處理循環邏輯

do-while語句在實際應用中應用比較廣泛, 通過如下示例體會do-while語句的執行邏輯:

int pwd ;do{    System.out.print(“請輸入密碼”);    pwd = scanner.nextInt();} while ( 123 != pwd) ;

上面的語句執行過程如下,首先聲明整型變量pwd,在do語句中提示“請輸入密碼”,接收用戶輸入的數據賦給pwd, 而后判斷123是否不等于pwd,若為true則執行do語句塊,以此類推,直到123等于pwd時,循環結束。

1.3.4. while和do-while語句的區別

while與do-while都是用于執行循環結構的語句,區別在于,while循環先判斷再執行,而do-while循環先執行一次,再判斷。那么,當初始情況不滿足循環條件時,while循環就一次都不會執行,而do-while循環不管任何情況都至少會執行一次。

注意:while和do-while語句的不同僅僅體現在第一次就不滿足條件的循環中;如果不是這樣的情況,while與do-while可以互換。請看如下兩段示例程序:

//示例1:while循環方式int pwd = 0;while ( 123 != pwd){        System.out.print(“密碼:”);        pwd = scanner.nextInt();}//示例2: do-while循環方式int    pwd ;do{        System.out.print(“密碼”);        pwd = scanner.nextInt();} while ( 123 != pwd) ;

分析示例1與示例2得出結論,運行結果完全一樣。這是因為兩段代碼第一次的while條件都滿足,此時while與do-whlie可以互換,所以結果完全一樣。

1.4. for語句

1.4.1. 考慮如下循環問題的相同之處

請考慮如下三個題目的相似之處:

  1. 計算從1加到100的值;
  2. 計算1+1/3+1/5+…+1/999;
  3. 找出從第1號學員到第500號學員中成績大于90的學員。

通過上面的問題可以看出,如上三個題目都是在有規律的重復執行某個操作,在程序中

考慮使用循環結構來解決。首先需要先找到前面介紹的循環變量,此循環變量在每一次的循環中有規律的發生變化,并且常常作為判斷是否繼續循環的條件。

首先,看第1個題目,設計循環變量i ,i的值為1,2,…,100,即:從1開始,每次增1。第二個題目,設計循環變量i , i的值為1,3,5,…,999,即:從1開始,每次增2。第三個題目,設計循環變量i , i的值為1,2,…,500,即:從1開始,每次增1。

通過上面的分析,可以看出,如上的循環都是固定次數的循環,這種情況,優先考慮使用for語句來實現。

1.4.2. for語句的執行邏輯

for語句是循環中最最常用的一種方式。for循環用于將某個語句或語句塊重復執行預定次數的情形。語法如下:

  1. for ( 表達式1;表達式2;表達式3 ) {
  2. 語句塊(循環體)
  3. }

可以看出,for循環的三個表達式之間通過分號;進行分隔,其執行邏輯如下所示:

  1. 計算表達式1的值,通常為循環變量賦初值;
  2. 計算表達式2(表達式2為邏輯表達式)的值,即判斷循環條件是否為真,若值為真則執行循環體一次(語句塊),否則跳出循環;
  3. 執行循環體;
  4. 計算表達式3的值,此處通常寫更新循環變量的賦值表達式;
  5. 計算表達式2的值,若值為true則執行循環體,否則跳出循環;
  6. 如此循環往復,直到表達式2的值為false。

1.4.3. for語句的流程圖

for語句流程圖如圖-1所示:

圖- 1

簡單示例如下:

for ( int i = 1 ; i <= 10 ; i + + ) {        System.out.println( i );}

如上程序的輸出結果為:1 2 3 4 5 6 7 8 9 10

分析如上程序的執行過程:首先,初始化i的值為1,判斷i是否小于等于10,結果為true,其次,輸出i的值1,然后,執行i的自增1,再判斷i是否小于等于10,結果為true,執行輸出i的值2,以此類推……輸出i的值10后,執行i的自增1,此為i為11,判斷結果為false,程序終止。

1.4.4. for語句用于實現固定次數循環

for語句常常用于解決固定次數循環的處理,比如說累加和,想求1+2+3+…+100的結果,次數固定執行100次,可以考慮使用for循環處理,參見如下代碼:

int sum = 0 ;for ( int i = 1 ; i <= 100 ; i + + ) {sum += i ;}System.out.println(“1到100的和為:” + sum ) ;

分析上面代碼的執行過程,首先,聲明一個變量用于保存累加和,此變量命名為sum,賦初始值為0,而后,for循環從1開始,每次增1,執行100次,循環體中將i的值累加到sum變量中。注意:每次都是在sum的基礎之上加上i,所以使用了sum += i。循環結束后,輸出結果“1到100的和為:5050“。

了解了如上題目之后,問:想求10的階乘,即1*2*3*…*10,可不可以使用for循環來解決,如果可以的話要如何解決呢?當然可以,try!!!

1.4.5. for語句三個表達式特殊用法

首先回顧for語句的語法:

for ( 表達式1;表達式2;表達式3 ) {語句塊    }

通過上面的代碼可以看出,for語句實現循環時需要3個表達式并且使用分號;分隔,

在實際使用時,for語句可以有幾種特殊的使用方法:

特殊方式1:表達式1位置內容為空,看如下代碼:

int sum = 0 ;int i = 1;for ( ; i <= 10 ; i + + ) {        sum += i ;}System.out.println(“1到10的和為:” + sum ) ;

通過上面的代碼可以看出,雖然省略了表達式1,但只是將它放在了for循環的外面進行聲明,只是位置不同而已。在此需要注意一點,即使for語句中不寫表達式1了,表達式2前面的分號;也不能省略。

特殊方式2:表達式3位置內容為空時,看如下代碼:

int sum = 0 ;for ( int i = 1 ; i <= 10 ; ) {sum += i ;        i + + ;}System.out.println(“1到10的和為:” + sum ) ;

通過上面的代碼可以看出,雖然省略了表達式3,但也只是將它放在了for循環體之中,只是位置不同而已。在此需要注意一點,即使for語句中不寫表達式3了,表達式2后面的分號;也不能省略。

特殊方式3:表達式1,2,3位置內容均為空時,看如下代碼:

for ( ; ; ) {System.out.println(“我要學習……”);}

通過上面的代碼可以看出,如上代碼沒有循環變量、沒有條件控制,因此會造成死循環,而死循環在編寫程序過程中是必須要避免的,可以在循環體中添加break跳出循環。

特殊方式4:表達式 1 和 3 位置內容的多樣化

for語句中的三個表達式中表達式1和表達式3可以使用逗號表達式,逗號表達式就是通過”,”運算符隔開的多個表達式組成的表達式,從左向右進行計算。看如下示例:

for ( int i =1 , j = 6 ; i <= 6 ; i +=2 , j -=2 ) {System.out.println(“ i , j = “ + i + “,” + j );}

上面的代碼的執行邏輯如下:初始設置i為1,j為6,判斷i是否小于等于6,為真執行循環體,而后執行i+=2,j-=2,即:i增2,j減2。再判斷i是否小于等于6,為真繼續執行循環體,以此類推,直到條件為false。本程序的輸出結果為:

i , j = 1 , 6i , j = 3 , 4i , j = 5 , 2

1.4.6. 循環中使用break語句

循環中的break語句應用率很廣,break可用于循環語句或switch語句中,其用于循環時,可使程序終止循環而執行循環后面的語句,常常與條件語句一起使用,看如下代碼:

int sum = 0;for(int i=1; i<=100; i++){if(sum>=4000){break;}sum += i;}System.out.println(sum);

上面的程序需要統計1到100的累加和,條件是當和大于等于4000時則終止計算,此案例通過在if語句中使用break實現了for語句的退出,本程序最終sum的值為:4005。

1.4.7. 循環中使用continue語句

continue語句只能用于循環中,它的作用為跳過循環體中剩余語句而執行下一次循環,看如下代碼:

int sum = 0;for(int i=1; i<=100; i++){if( i % 10 == 3 ){continue;}sum += i;}System.out.println(sum);

上面的程序需要統計1到100的累加和,條件是跳過所有個位為3的,此案例通過在if語句中使用continue實現了跳過for語句中剩余的循環體語句,本程序最終sum的值為: 4570。


上一篇:JUnit

下一篇:猜字母游戲

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 贡觉县| 松潘县| 肥西县| 和林格尔县| 松溪县| 聊城市| 青海省| 噶尔县| 德格县| 墨脱县| 平南县| 和静县| 天水市| 新巴尔虎左旗| 镇坪县| 剑河县| 南木林县| 青河县| 马山县| 清徐县| 长泰县| 丘北县| 息烽县| 含山县| 普定县| 鹤庆县| 祁阳县| 梧州市| 长顺县| 大埔县| 西华县| 化州市| 佛坪县| 房山区| 甘洛县| 荔波县| 潮州市| 祁东县| 玉田县| 涞水县| 晋中市|