第三章、-控制程式的行為講解課件_第1頁
第三章、-控制程式的行為講解課件_第2頁
第三章、-控制程式的行為講解課件_第3頁
第三章、-控制程式的行為講解課件_第4頁
第三章、-控制程式的行為講解課件_第5頁
已閱讀5頁,還剩153頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第三章、控制程式的行為本章大綱 3-1、判斷敘述 3-2、迴圈敘述 3-3、分支敘述 3-4、函式呼叫1[Java2語言實(shí)務(wù)]第三章、控制程式的行為本章大綱1[Java2語言實(shí)務(wù)]循序敘述與控制敘述但真正在使用的程式,幾乎每一個(gè)都會(huì)需要透過特定的敘述(Statement)要求程式做執(zhí)行順序的改變。不會(huì)要求改變流程的敘述,稱為”循序敘述”。如宣告,加減運(yùn)算等;會(huì)改變流程的敘述稱為”控制敘述”。Java的控制敘述:判斷(Decision)是用來判斷當(dāng)某個(gè)條件成立時(shí),執(zhí)行對應(yīng)的程式處執(zhí)行,例如,考試成績大於60分為及格,則印出及格訊息;迴圈(Looping)是用來表達(dá)可重複性的動(dòng)作,比如說作1加到100的動(dòng)作,連續(xù)加99次;分支(Branch)是用在如中斷迴圈並跳出的情形;副程式呼叫(FunctionCall)是將常用的程式段獨(dú)立出來,在需要時(shí)跳至該處執(zhí)行後,再回原處繼續(xù)執(zhí)行,如此可以簡化程式的設(shè)計(jì),是程式設(shè)計(jì)常用到的技術(shù)。2[Java2語言實(shí)務(wù)]循序敘述與控制敘述但真正在使用的程式,幾乎每一個(gè)都會(huì)需要透過控制敘述表3[Java2語言實(shí)務(wù)]控制敘述表3[Java2語言實(shí)務(wù)]3-1、判斷敘述4[Java2語言實(shí)務(wù)]3-1、判斷敘述4[Java2語言實(shí)務(wù)]3-1判斷敘述:if及if-else,switch-case在真實(shí)世界中,我們常常要面對許多根據(jù)條件作判斷(Decision)結(jié)果,執(zhí)行不同動(dòng)作的情形。Java三種判斷敘述的分類:

判斷情形關(guān)鍵字單執(zhí)行條件判斷敘述if雙執(zhí)行條件判斷敘述if-else多重條件判斷敘述if-elseif,switch-case5[Java2語言實(shí)務(wù)]3-1判斷敘述:if及if-else,switch-case(1)單執(zhí)行條件判斷敘述if 當(dāng)程式執(zhí)行到if判斷運(yùn)算式時(shí),會(huì)根據(jù)條件判斷,若結(jié)果為真(true),執(zhí)行運(yùn)算式;若結(jié)果為假(false),則不執(zhí)行?!菊Z法】if(條件運(yùn)算式)運(yùn)算式;6[Java2語言實(shí)務(wù)](1)單執(zhí)行條件判斷敘述if 當(dāng)程式執(zhí)行到if判斷運(yùn)算式時(shí)【語法說明-大括號存在的差異性】請注意if中運(yùn)算式,可以是單一敘述也可以是加上大括弧的一連串運(yùn)算式集合完成較複雜的功能。在多行敘述時(shí)要,以指定運(yùn)算式敘述的範(fàn)圍,否則運(yùn)算式的範(fàn)圍會(huì)誤為只有一行,圖3-2說明運(yùn)算集合中大括號存在的差異性。7[Java2語言實(shí)務(wù)]【語法說明-大括號存在的差異性】請注意if中運(yùn)算式,可以圖3-2運(yùn)算集合中大括號存在的差異性圖8[Java2語言實(shí)務(wù)]圖3-2運(yùn)算集合中大括號存在的差異性圖8[Java2語言Ex3_1_1【大括號存在的差異性範(fàn)例3-1】3-1Demoif.javaclassDemoif{publicstaticvoidmain(String[]args){ intx; inty; intz;

x=2; y=1; z=3;

if(x<5){ y=y-1; z=z+3; } System.out.println("x="+x+",y="+y+",z="+z);}}

【執(zhí)行結(jié)果】x=2,y=0,z=6【說明】[第4~6行]intx;inty;intz;三行程式宣告三個(gè)整數(shù)變數(shù)的名稱分別為x、y、z。[第8~10行]x=2;y=1;z=3;為設(shè)定x、y、z的值分別為整數(shù)2、1、3。[第12行]if(x<5)判斷x的值是否小於5,若判斷的結(jié)果為true,程式進(jìn)入if包含的內(nèi)運(yùn)算式執(zhí)行y=y-1;及z=z+3;,[第15行]System.out.println("x="+x+",y="+y+",z="+z);使用System.out.println()分別印出x、y、z的值至螢?zāi)簧稀?[Java2語言實(shí)務(wù)]Ex3_1_1【大括號存在的差異性範(fàn)例3-1】3-1DEx3_1_201. classDemoif_2{02. publicstaticvoidmain(String[]args){03. intx=2;04. inty=1;05. intz=0; 06. System.out.println(“Beforeswap:x=“+x+”,y=“+y);07. if(x>y){08. z=y;09. y=x;10. x=z; 11. } 12. System.out.println(“Afterswap:x="+x+",y="+y,"z="+z);13. }14. }[執(zhí)行結(jié)果]Beforeswap:x=2,y=1Afterswap:x=1,y=210[Java2語言實(shí)務(wù)]Ex3_1_201. classDemoif_2{10[<<範(fàn)例說明>>

[第3~5行]宣告三個(gè)整數(shù)變數(shù)x、y、z並設(shè)定其值分別為2、1、0。[第7~9行] 判斷x值是否大於y,若判斷的結(jié)果為true,程式會(huì)進(jìn)入if後由大括號所包含的運(yùn)算式,依序執(zhí)行z=y;y=x;x=z;三行敘述,這三行敘述是典型x、y兩個(gè)變數(shù)內(nèi)容互換的寫法,其中z變數(shù)式當(dāng)作中間暫存值,將y的值先保留下來。所以當(dāng)執(zhí)行y=x後才能將原來的值由z變數(shù)再設(shè)定給x變數(shù)。

[第12行]使用System.out.println()分別列印x、y的值至螢?zāi)簧稀?1[Java2語言實(shí)務(wù)]<<範(fàn)例說明>>

11[Java2語言實(shí)務(wù)](2)雙條件判斷 if-else雙條件判斷 if-else:也包含了條件“不成立”時(shí)所要執(zhí)行的另一個(gè)運(yùn)算式。當(dāng)if判斷結(jié)果為true時(shí),程式會(huì)執(zhí)行if之後的運(yùn)算式部分;當(dāng)if判斷結(jié)果為false時(shí),程式會(huì)執(zhí)行else之後的運(yùn)算式部分?!菊Z法】 if(條件運(yùn)算式) 執(zhí)行運(yùn)算式一; else 執(zhí)行運(yùn)算式二;12[Java2語言實(shí)務(wù)](2)雙條件判斷 if-else雙條件判斷 if-else:13[Java2語言實(shí)務(wù)]13[Java2語言實(shí)務(wù)]Ex3_1_3(1) 若有一個(gè)程式在開始時(shí)設(shè)定一個(gè)整數(shù)代表考試的成績,若成績大於60分則螢?zāi)伙@示及格訊息;若小於六十分則螢?zāi)伙@示不及格訊息。14[Java2語言實(shí)務(wù)]Ex3_1_3(1) 若有一個(gè)程式在開始時(shí)設(shè)定一個(gè)整數(shù)Ex3_1_3(2)3-2DemoPass.javaclassDemoPass{publicstaticvoidmain(String[]args){ intscore; score=75;

if(score>=60){ System.out.println("Youpassedthetest!"); } else{ System.out.println("Youdidnotpassthetest!"); } }}【執(zhí)行結(jié)果】Youpassedthetest!15[Java2語言實(shí)務(wù)]Ex3_1_3(2)3-2DemoPass.java15Ex3_1_3範(fàn)例說明第3~4行:intscore;score=75;首先宣告名稱為score的整數(shù)變數(shù),並設(shè)定其值為75;第6~11行if(score>=60){ System.out.println("Youpassedthetest!"); } else{ System.out.println("Youdidnotpassthetest!"); }判斷成績是否大於或等於60分,若結(jié)果為true,則執(zhí)行System.out.println(“Youpassedthetest!”);印出及格訊息;若結(jié)果為false,印出不及格訊息,在範(fàn)例中score的值為75,所以if條件式會(huì)為true。16[Java2語言實(shí)務(wù)]Ex3_1_3範(fàn)例說明第3~4行:intscore;Ex3_1_401. classDemoPass_2{02. publicstaticvoidmain(String[]args){03. intscore,num;04. score=50;05.06. if(score>=60){07. num=score-60;08. } 09. else{10. num=60-score;11. }12. System.out.println("Thedifferenceto60is"+num+"!");13. }14. }執(zhí)行結(jié)果:Thedifferenceto60is10!

17[Java2語言實(shí)務(wù)]Ex3_1_401. classDemoPass_2{1<<範(fàn)例說明>>

第3~4行:宣告名稱為score、num兩個(gè)整數(shù)變數(shù)各代表實(shí)得成績與60分的差距,並設(shè)定score值為50。

第5~10行:判斷成績是否大於或等於60分,若結(jié)果為true,則執(zhí)行num=score-60;若結(jié)果為false,則執(zhí)行num=60-score。範(fàn)例中score=50,所以if條件為false,執(zhí)行後得到num的值為10。

第11行:無論if結(jié)果為何,均執(zhí)行System.out.println("Thedistanceto60is"+num+"!");18[Java2語言實(shí)務(wù)]<<範(fàn)例說明>>

18[Java2語言實(shí)務(wù)](3)if的多重條件判斷敘述

當(dāng)程式需要作一連串的判斷時(shí),可以利用

多個(gè)單一判斷語法組成多重判斷,判斷式中的運(yùn)算式或變數(shù)會(huì)逐一單獨(dú)地被判斷,

根據(jù)判斷結(jié)果的不同,執(zhí)行不同的運(yùn)算式。這樣的結(jié)構(gòu)類似ifelse-if,

其實(shí)是多層if的應(yīng)用。19[Java2語言實(shí)務(wù)](3)if的多重條件判斷敘述當(dāng)程式需要作一連串的判斷時(shí)(3)多重條件判斷(cont.)【應(yīng)用語法】以多層if形成if-elseif多重判斷的應(yīng)用格式為if(條件運(yùn)算式一)運(yùn)算式一;elseif(條件運(yùn)算式二)運(yùn)算式二;………elseif(條件運(yùn)算式n)運(yùn)算式n;else運(yùn)算式n+1;20[Java2語言實(shí)務(wù)](3)多重條件判斷(cont.)【應(yīng)用語法】以多層if形成i【應(yīng)用語法說明】當(dāng)程式執(zhí)行時(shí),若if的條件運(yùn)算式一為true時(shí),會(huì)執(zhí)行運(yùn)算式一,若其為false時(shí),程式執(zhí)行次一elseif判斷式。同樣的,若elseif的條件運(yùn)算式為true時(shí),會(huì)執(zhí)行對應(yīng)的運(yùn)算式,若其為false時(shí),程式會(huì)執(zhí)行次一elseif判斷式,這樣的判斷會(huì)逐一地執(zhí)行,直到有一個(gè)條件式為true或執(zhí)行最後else的運(yùn)算式部份。21[Java2語言實(shí)務(wù)]【應(yīng)用語法說明】當(dāng)程式執(zhí)行時(shí),21[Java2語言實(shí)務(wù)]【應(yīng)用語法說明】(cont.)if(條件運(yùn)算式一)//第一層運(yùn)算式一;elseif(條件運(yùn)算式二)//第二層 運(yùn)算式二;………elseif(條件運(yùn)算式n)//第n層運(yùn)算式n;else運(yùn)算式n+1;這樣的語意請比較switch敘述的語法22[Java2語言實(shí)務(wù)]【應(yīng)用語法說明】(cont.)if(條件運(yùn)算式一)//第Ex3_1_5例如,若有一個(gè)程式在開始時(shí)設(shè)定一個(gè)整數(shù)變數(shù)代表考試的成績,並依下列規(guī)則評等:90分以上A等;80到89分為B等;70分到79分為C等;60分到69分為D等;0分到59分為E等,若輸入的成績小於0分,或者大於100分,則印出錯(cuò)誤訊息。把問題的邏輯想法表示成”成績評等程式流程圖”。23[Java2語言實(shí)務(wù)]Ex3_1_5例如,若有一個(gè)程式在開始時(shí)設(shè)定一個(gè)整數(shù)變數(shù)代Ex3_1_501. classDemoScore{02. publicstaticvoidmain(String[]args){03. intscore=73;04. if(score>100)05. System.out.println(06. "TheNumberyouenteredisover100");07. elseif(score>=90)08. System.out.println("YougotA!");09. elseif(score>=80)10 System.out.println("YougotB!");11. elseif(score>=70)12. System.out.println("YougotC!");13. elseif(score>=60)14. System.out.println("YougotD!");15. elseif(score>=0)16. System.out.println("YougotE!");17. else18. System.out.println(19."TheValueyouenteredisunderzeropoints");【執(zhí)行結(jié)果】YougotC!24[Java2語言實(shí)務(wù)]Ex3_1_501. classDemoScore{24【程式說明】(cont.)在範(fàn)例中程式會(huì)根據(jù)的成績不同,透過印出相對應(yīng)的等級至螢?zāi)簧稀5?行:intscore=73; 程式一開始宣告一名稱為score的整數(shù)變數(shù)並設(shè)定其值為73。第4行:if(score>100) 然後程式使用elseif的判斷應(yīng)用,首先判斷if(score>100),相當(dāng)於if(73>100)所以條件式不成立。第7行:elseif(score>=90)判斷elseif(score>=90),相當(dāng)於if(73>=90)所以條件式也不成立。第11行:elseif(score>=70) 這樣的判斷一直到if(score>=70),相當(dāng)於if(73>=70)會(huì)成立,所以執(zhí)行System.out.println(“YougotC!”),將結(jié)果輸出至螢?zāi)弧?5[Java2語言實(shí)務(wù)]【程式說明】(cont.)在範(fàn)例中程式會(huì)根據(jù)的成績不同,透過Ex3_1_601. classDemoSeason{02. publicstaticvoidmain(String[]args){03. intmonth=1;04. if(month>12)05. System.out.println(06. "Themonthyouenteredisgreatthan12");07. elseif(month>=11||month==1)08. System.out.println("Winter!");09. elseif(month>=8)10. System.out.println("Autumn!");11. elseif(month>=5)12. System.out.println("Summer!");13. elseif(month>=2)14. System.out.println("Spring!");15. else16. System.out.println(17. "Themonthyouenteredislessthanzero");18. 19. }20.21. }執(zhí)行結(jié)果:Winter!

26[Java2語言實(shí)務(wù)]Ex3_1_601. classDemoSeason{1<<範(fàn)例說明>>第3行:宣告一名稱為month的整數(shù)代表月份數(shù),並設(shè)定其值為1。(註1)

(註1:應(yīng)用程式可以運(yùn)用輸入視窗物件輸入月份並判斷季節(jié)。)

第4~19行,首先判斷if(month>12),即if(1>12)不成立,而第7行亦不成立,…直至第15行判斷成立。因此執(zhí)行System.out.println("Winter!");,將結(jié)果輸出至螢?zāi)簧稀?7[Java2語言實(shí)務(wù)]<<範(fàn)例說明>>第3行:宣告一名稱為month的整數(shù)(4)switch的多重條件判斷語法(cont.)多重判斷語法的另一種表示方式為運(yùn)用switch判斷語法【語法】switch

(條件式){

case常數(shù)一: 運(yùn)算式一;

break;...case常數(shù)n:

運(yùn)算式n;

break;

default:運(yùn)算式n+1;break;}28[Java2語言實(shí)務(wù)](4)switch的多重條件判斷語法(cont.)多重判斷語(4)switch的多重條件判斷語法【語法】switch判斷語法的格式為switch

(條件式){

case常數(shù)一:運(yùn)算式一;

break;case常數(shù)二:

運(yùn)算式二;

break;...case常數(shù)n:

運(yùn)算式n;

break;

default:運(yùn)算式n+1;break;}29[Java2語言實(shí)務(wù)](4)switch的多重條件判斷語法【語法】switch判斷【語法說明】switch關(guān)鍵字後面括號內(nèi)的條件式必須是整數(shù)或字元型態(tài)的變數(shù)。變數(shù)將產(chǎn)生許多不同的值,下面每一個(gè)狀況(case)便是代表對條件式不同的值的處理;每個(gè)case的後面都有一個(gè)常數(shù),該常數(shù)的型態(tài)必須對應(yīng)switch後的條件式為整數(shù)或字元,其中字元常數(shù)須由單引號作標(biāo)示,如’A’。30[Java2語言實(shí)務(wù)]【語法說明】switch關(guān)鍵字後面括號內(nèi)的條件式必須是整數(shù)或case的冒號後面都有運(yùn)算式;運(yùn)算式可以是由大括號”{}“包含的一連串運(yùn)算式;在運(yùn)算式後面的break可有可無的,若是case後的運(yùn)算式?jīng)]有加上break,則會(huì)繼續(xù)執(zhí)行下一個(gè)case運(yùn)算式,直到遇到一個(gè)break或結(jié)束switch整個(gè)運(yùn)算式為止;default是可有可無的,是表示若switch的條件式所產(chǎn)生的結(jié)果都沒有對應(yīng)到前面任一個(gè)case時(shí),則程式就由default的地方處理。31[Java2語言實(shí)務(wù)]case的冒號後面都有運(yùn)算式;運(yùn)算式可以是由大括號”{}Ex3_1_73-4DemoScoreSwitch.javaclassDemoScoreSwitch{publicstaticvoidmain(String[]args)throwsException{ BufferedReaderin=newBufferedReader(newInputStreamReader(System.in));intscore=Integer.parseInt(in.readLine());

32[Java2語言實(shí)務(wù)]Ex3_1_73-4DemoScoreSwitch.jaEx3_1_7(cont.)

switch(score){ case100: System.out.println("YougotA+!"); break; case90: System.out.println("YougotA!"); break; case80: System.out.println("YougotB!"); break; case70: System.out.println("YougotC!"); break;33[Java2語言實(shí)務(wù)]Ex3_1_7(cont.) switch(score){Ex3_1_7(cont.) case60: System.out.println("YougotD!"); break; case0: System.out.println("YougotE!"); break; default: System.out.println("TheValueyoumustbe00,90,80,70,60,50,40,30,20,10,0points"); break; }}}【執(zhí)行結(jié)果】(根據(jù)輸入的不同,印出評等。)34[Java2語言實(shí)務(wù)]Ex3_1_7(cont.) case60:34[Ja【程式說明】在範(fàn)例中,設(shè)定的值為10的倍數(shù)中{0,10,20,30,40,50,60,70,80,90,100}中的其中一個(gè),而非1~100任一值。第8行switch(score)表示程式將透過switch判斷語法,對score變數(shù)的數(shù)值,選擇要執(zhí)行的運(yùn)算式。第9行case100:表示若score的值符合score=100的情況,就執(zhí)行case:後面的程式片段。35[Java2語言實(shí)務(wù)]【程式說明】在範(fàn)例中,設(shè)定的值為10的倍數(shù)中{0,10,20【程式說明】(cont.)第11行break;表示程式片段執(zhí)行完畢,同時(shí)結(jié)束switch多重判斷語法,程式繼續(xù)往下一段運(yùn)算式執(zhí)行;若(case100:)條件不成立,程式會(huì)往下一個(gè)(case90:)作判斷,直到case條件成立,進(jìn)入case:後程式片段執(zhí)行程式,最後由break;來跳出switch多重判斷語法。第27行default:表示當(dāng)所有的case條件都不成立時(shí),程式要執(zhí)行的運(yùn)算式。36[Java2語言實(shí)務(wù)]【程式說明】(cont.)第11行break;36[J 3-2、迴圈敘述 37[Java2語言實(shí)務(wù)] 3-2、迴圈敘述 37[Java2語言實(shí)務(wù)]3-2迴圈(Loop)敘述:for,while,do-while和3-1判斷敘述相似的,在真實(shí)世界中,我們也常需要作重複性的運(yùn)算,比如說計(jì)算1加到10的總數(shù),就需要連續(xù)作9次加法,這時(shí)我們可以用迴圈來控制Java程式的重複執(zhí)行某些工作。Java語言中的迴圈有三種型態(tài),分別為:(1)for迴圈(2)while迴圈(3)do-while迴圈;以累加數(shù)字1到10的總和範(fàn)例,作為迴圈三種型態(tài)的用法、比較和說明38[Java2語言實(shí)務(wù)]3-2迴圈(Loop)敘述:for,while,do-(1)for迴圈敘述:【語法】for語法為 for(初始設(shè)定敘述;可重複條件;改變相關(guān)敘述){ 運(yùn)算式;………..}39[Java2語言實(shí)務(wù)](1)for迴圈敘述:【語法】for語法為39[Java【語法說明】可以把for迴圈視為一個(gè)計(jì)數(shù)器在跑動(dòng)。指定的for語法可以分為三個(gè)區(qū)段,分別用分號隔開,由左而右依序介紹:初始設(shè)定敘述:常用以設(shè)定計(jì)數(shù)器開始的時(shí)間,也就是迴圈從什麼狀態(tài)值開始執(zhí)行。通常我們會(huì)指定一個(gè)整數(shù)變數(shù)並將它歸零,如i=0。可重複條件:表示能繼續(xù)執(zhí)行迴圈的符合條件。例如若可重複條件為i<10,當(dāng)i的值大於、等於10時(shí),則會(huì)離開迴圈。改變相關(guān)敘述:常用以決定計(jì)數(shù)器的計(jì)數(shù)單位每次的變化。也就是每次迴圈的變化值,如i=i+3。40[Java2語言實(shí)務(wù)]【語法說明】可以把for迴圈視為一個(gè)計(jì)數(shù)器在跑動(dòng)。40[JEx3_2_1我們以求數(shù)字自1加到10的總和並將結(jié)果顯示出來的問題為範(fàn)例,說明for迴圈敘述語法的使用方式。在撰寫迴圈敘述程式前,習(xí)慣上可以先將加總的演算方法(Algorithm)列出來:步驟1:宣告變數(shù)sum並清除為0,用以存放加總結(jié)果。並設(shè)定計(jì)數(shù)變數(shù)i=1,表示從1開始作運(yùn)算。步驟2:如果i<=10,跳至步驟3繼續(xù)迴圈的執(zhí)行,否則跳至步驟4離開迴圈。步驟3:sum+=i;且i++;再回到步驟2。步驟4.列印加總結(jié)果(sum),程式結(jié)束41[Java2語言實(shí)務(wù)]Ex3_2_1我們以求數(shù)字自1加到10的總和並將結(jié)果顯示出Ex3_2_1(cont.)將演算方法轉(zhuǎn)換成流程圖表示如圖3-9再將流程圖轉(zhuǎn)換成Java程式3-542[Java2語言實(shí)務(wù)]Ex3_2_1(cont.)將演算方法轉(zhuǎn)換成流程圖表示如圖Ex3_2_1程式3-5DemoSumFor.javaclassDemoSumFor{publicstaticvoidmain(String[]args){intsum=0;

for(inti=1;i<=10;i++){ sum=sum+i; } System.out.println("TheSummationis"+sum);}}【執(zhí)行結(jié)果】TheSummationis5543[Java2語言實(shí)務(wù)]Ex3_2_1程式3-5DemoSumFor.java4【程式說明】第3行:intsum=0; 宣告一個(gè)名稱為sum的整數(shù)變數(shù),並設(shè)定其值為0;第4行:for(inti=1;i<=10;i++){ for迴圈敘述行中,初始值變數(shù)i=1,表示迴圈第一次從1開始作運(yùn)算可重複條件定義i<=10,表示當(dāng)i<=10成立時(shí),允許迴圈運(yùn)作;當(dāng)i<=10不成立時(shí),程式即跳出迴圈程式碼改變值定義i++,也就是i=i+1,表示每次迴圈i的變化值是1。第5行:sum=sum+i; 程式第一次執(zhí)行時(shí)i的值為1,所以進(jìn)行sum=sum+i;的動(dòng)作,並且將i+1=2設(shè)定給i。依迴圈的敘述當(dāng)進(jìn)行至i的值為11時(shí),for迴圈判斷計(jì)數(shù)器的值大於10,即跳出迴圈至下一個(gè)運(yùn)算式。第7行:System.out.println("TheSummationis"+sum); 透過system.out.println()將結(jié)果輸出至螢?zāi)簧稀?4[Java2語言實(shí)務(wù)]【程式說明】第3行:intsum=0;44[Java2Ex3_2_201.classDemoSumFor_2{02. publicstaticvoidmain(String[]args){03. for(inti=1;i<=10;i++){04. System.out.println(i);05. //在螢?zāi)簧巷@示1-10的內(nèi)容06. }07. 08. }09. }

45[Java2語言實(shí)務(wù)]Ex3_2_201.classDemoSumFor_2<<程式說明>>

程式Ex3_2_2中,第3~6行:

for(inti=1;i<=10;i++){ System.out.println(i); } 設(shè)定for迴圈中初始值變數(shù)i=1,表示迴圈第一次從1開始運(yùn)算,只要i<=10即重複執(zhí)行迴圈運(yùn)作,並將數(shù)值變化結(jié)果i顯示在螢?zāi)簧希钡絠<=10不成立時(shí),即跳離迴圈。46[Java2語言實(shí)務(wù)]<<程式說明>>

46[Java2語言實(shí)務(wù)](2)while迴圈敘述以比較的方式來說明while和dowhile迴圈語法。while迴圈:先作判斷運(yùn)算式,決定是否允許迴圈繼續(xù)執(zhí)行;do-while迴圈: 則是先執(zhí)行迴圈,再判斷是否允許下一次執(zhí)行。do-while至少執(zhí)行運(yùn)算一次,而while可能在首次判斷運(yùn)算式即不成立時(shí)直接跳出迴圈,所以可能執(zhí)行0次?!菊Z法】while語法為 while(判斷運(yùn)算式){ 運(yùn)算式; }47[Java2語言實(shí)務(wù)](2)while迴圈敘述以比較的方式來說明while和do【語法說明】在while迴圈敘述語法中:不會(huì)預(yù)設(shè)執(zhí)行的次數(shù)習(xí)慣上會(huì)指定一個(gè)迴圈控制變數(shù),並設(shè)定迴圈控制變數(shù)進(jìn)入迴圈前的值,再進(jìn)入迴圈中。在迴圈的運(yùn)算式中改變控制變數(shù)的值,再回至迴圈起點(diǎn)透過判斷運(yùn)算式來決定是否再一次執(zhí)行迴圈。當(dāng)程式執(zhí)行到while的判斷運(yùn)算式時(shí),若判斷運(yùn)算式成立則執(zhí)行運(yùn)算式,不成立則結(jié)束迴圈。48[Java2語言實(shí)務(wù)]【語法說明】在while迴圈敘述語法中:48[Java2Ex3_2_3同樣以求數(shù)字自1加到10總和的範(fàn)例來說明while迴圈的應(yīng)用:01. classDemoSumWhile{02. publicstaticvoidmain(String[]args){03. intsum=0;04. inti=1;05. while(i<=10){06. sum=sum+i;07. i++; 08. }09. System.out.println("TheSummationis"+sum);10. //在螢?zāi)簧巷@示出內(nèi)容11. }12. }【執(zhí)行結(jié)果】TheSummationis5549[Java2語言實(shí)務(wù)]Ex3_2_3同樣以求數(shù)字自1加到10總和的範(fàn)例來說明whi【程式說明】第3~4行:intsum=0;inti=1;宣告一個(gè)名稱為sum的整數(shù)變數(shù),用於存放加總後的結(jié)果,並設(shè)定其值為0;宣告i為整數(shù)變數(shù)作為控制變數(shù),並設(shè)定數(shù)值為1,表示加總從1開始;第5~8行:while(i<=10){sum=sum+i;i++;}判斷運(yùn)算式為i<=10,結(jié)果成立執(zhí)行就進(jìn)入迴圈sum=sum+i;把每次i改變的值,跟前一次的總合相加,放到設(shè)定運(yùn)算子左邊的sum,成為新的累加總合設(shè)定迴圈每次i改變的值為1,用i++表示,因?yàn)?加到10每個(gè)數(shù)字變化量都是1當(dāng)迴圈執(zhí)行到i=11時(shí),判斷運(yùn)算式不成立,程式跳出while迴圈敘述語法,因此不會(huì)執(zhí)行加總第9行:System.out.println("TheSummationis"+sum);50[Java2語言實(shí)務(wù)]【程式說明】第3~4行:intsum=0;inti控制變數(shù)在進(jìn)入迴圈常錯(cuò)誤,致使程式根本無法進(jìn)入迴圈。inti=0,sum=0;while((i>=1&&i<=10)){ system.out.print1n(i); sum=sum+1; i++;}每次執(zhí)行迴圈時(shí)控制變數(shù)值的更改不正確或永遠(yuǎn)沒有更改,使迴圈無法停止,形成“無窮迴圈”。使用迴圈語法時(shí)初學(xué)者常常容易犯的錯(cuò)誤51[Java2語言實(shí)務(wù)]使用迴圈語法時(shí)初學(xué)者常常容易犯的錯(cuò)誤51[Java2語言實(shí)Ex3_2_401. classDemoWhile_2{02. publicstaticvoidmain(String[]args){03. inti=1;04. while(i<=10){05. System.out.print(i)+",";06. //在螢?zāi)簧巷@示1-10的出內(nèi)容07. i++; 08. }09. System.out.println("End");10. }11. }

執(zhí)行結(jié)果:1,2,3,4,5,6,7,8,9,10,End

52[Java2語言實(shí)務(wù)]Ex3_2_401. classDemoWhile_2{5<<程式說明>>

第3行:程式一開始宣告名稱i為一整數(shù),並設(shè)定其值為1

第4~7行:

while(i<=10){ System.out.print(i)+","; //在螢?zāi)簧巷@示1-10的出內(nèi)容 i++; }

while迴圈敘述語法,每次列印出變數(shù)i的值及運(yùn)算,直到其判斷運(yùn)算式為11>10,條件不成立,因此不執(zhí)行迴圈,執(zhí)行下一個(gè)敘述,將End字串印出後程式結(jié)束。53[Java2語言實(shí)務(wù)]<<程式說明>>

53[Java2語言實(shí)務(wù)](3)do-while迴圈敘述【語法及流程圖】【語法】do-while語法的格式為do{運(yùn)算式;????}while(判斷運(yùn)算式);54[Java2語言實(shí)務(wù)](3)do-while迴圈敘述【語法及流程圖】【語法】d【語法說明】do-while和while相同:不預(yù)先設(shè)定迴圈執(zhí)行的次數(shù)。不同:先設(shè)定控制變數(shù)進(jìn)入迴圈前的值後,

即執(zhí)行迴圈範(fàn)圍內(nèi)的運(yùn)算式。如圖3-11:在迴圈範(fàn)圍的運(yùn)算式中也要注意設(shè)定控制變數(shù)的改變,最後再執(zhí)行判斷運(yùn)算式,若為true繼續(xù)執(zhí)行迴圈,若為false則離開迴圈。55[Java2語言實(shí)務(wù)]【語法說明】do-while和while55[Java2語Ex3_2_5以數(shù)字1到10加總的範(fàn)例說明do-while迴圈敘述語法的使用方式,如程式3-7。01. classDemoSumDoWhile{02. publicstaticvoidmain(String[]args){03. intsum=0,i=1;04. do{05. sum=sum+i;06. i++;07. }while(i<=10);08. System.out.println("Thesum="+sum);09. //在螢?zāi)簧巷@現(xiàn)出內(nèi)容10. Syatem.out.println("Thecontrolvariblei="+i);11. }12. }【執(zhí)行結(jié)果】Thesum=55 Thecontrolvariblei=1056[Java2語言實(shí)務(wù)]Ex3_2_5以數(shù)字1到10加總的範(fàn)例說明do-while【程式說明】在範(fàn)例3-7中,第4~7行:do{ sum=sum+i; i++;}while(i<=10);會(huì)先控制變數(shù)i設(shè)定成1,執(zhí)行一次迴圈範(fàn)圍裡面的計(jì)算總合sum=sum+i;執(zhí)行i++;使遞增值改變。執(zhí)行while(i<=10),判斷是否再次跳至do敘述處繼續(xù)執(zhí)行;當(dāng)i的數(shù)值為10時(shí):迴圈加總後,執(zhí)行i++得到i為11,while(i<=10)判斷運(yùn)算式不成立,程式會(huì)離開迴圈往下執(zhí)行印出結(jié)果而非跳至do繼續(xù)執(zhí)行迴圈。在使用do-while迴圈敘述語法時(shí),注意不可遺漏while(判斷運(yùn)算式);後面的分號,否則會(huì)產(chǎn)生語法錯(cuò)誤。57[Java2語言實(shí)務(wù)]【程式說明】在範(fàn)例3-7中,57[Java2語言實(shí)務(wù)]Ex3_2_601. classDemoDoWhile{02. publicstaticvoidmain(String[]args){03. inti=1;04. do{05. System.out.print(i)+",";06. //在螢?zāi)簧巷@現(xiàn)出1-10的內(nèi)容07. i++;08. }while(i<=10);09. System.out.println("End")10. }11. }執(zhí)行結(jié)果:1,2,3,4,5,6,7,8,9,10,End

58[Java2語言實(shí)務(wù)]Ex3_2_601. classDemoDoWhile{5<<程式說明>>

本範(fàn)例與範(fàn)例程式Ex3_2_4不同之處,在於迴圈do-while不管while限制迴圈條件為何,皆會(huì)先執(zhí)行迴圈內(nèi)容一次,因此當(dāng)i++使得i的值為11時(shí),雖i<=10不成立,但仍會(huì)執(zhí)行System.out.println(i)敘述一次後,

才跳出迴圈並結(jié)束。59[Java2語言實(shí)務(wù)]<<程式說明>>

59[Java2語言實(shí)務(wù)]3-3、分支敘述

60[Java2語言實(shí)務(wù)]3-3、分支敘述

60[Java2語言實(shí)務(wù)]3-3分支(Branching)敘述:break,continue因?yàn)檗捜νǔ?huì)在判斷運(yùn)算式不成立時(shí)跳出迴圈,但當(dāng)運(yùn)算判斷式永遠(yuǎn)成立時(shí),會(huì)變成所謂的“無限迴圈”時(shí),可以使用Java程式的分支語法61[Java2語言實(shí)務(wù)]3-3分支(Branching)敘述:break,cont(1)break分支敘述:【語法】break分支語法(迴圈敘述語法){ break;}【語法說明】 當(dāng)碰到break敘述,不論當(dāng)時(shí)控制變數(shù)及迴圈的狀況為何,程式將會(huì)終止迴圈繼續(xù)進(jìn)行,並強(qiáng)迫跳出到迴圈下一個(gè)運(yùn)算式執(zhí)行。62[Java2語言實(shí)務(wù)](1)break分支敘述:【語法】break分支語法62[(2)continue分支敘述:【語法】continue分支語法迴圈敘述語法{continue;}【語法說明】當(dāng)迴圈執(zhí)行到continue敘述處時(shí),會(huì)強(qiáng)迫程式暫時(shí)中止這一次迴圈的執(zhí)行,後面的運(yùn)算式雖包含在迴圈內(nèi),但在這一次迴圈進(jìn)行中將不會(huì)被執(zhí)行。程式會(huì)直接略過本次迴圈其餘的部分,而重新跳到迴圈的開始處,繼續(xù)重新開始下一次迴圈的執(zhí)行。63[Java2語言實(shí)務(wù)](2)continue分支敘述:【語法】continue分支Ex3_3_101. classDemoBreakAndContinue{02. publicstaticvoidmain(String[]args){03. for(inti=0;i<100;i++){04. if(i==74)break;//跳出For迴圈05. if(i%9!=0)continue;//跳至下一次迴圈06. System.out.println(i);07. //在螢?zāi)簧巷@現(xiàn)出i的內(nèi)容08. }09. System.out.println("afterbreak");10. }11. }64[Java2語言實(shí)務(wù)]Ex3_3_101. classDemoBreakAnd【程式說明】第3~7行for(inti=0;i<100;i++){ if(i==74)break;//跳出For迴圈 if(i%9!=0)continue;//下一個(gè)迴圈System.out.println(i);}定義for迴圈從i=1開始到i=100時(shí)結(jié)束,每次i改變的數(shù)值為加1,若i的值等於74時(shí),會(huì)執(zhí)行break敘述語法則跳出迴圈,執(zhí)行system.out.println(“i”);若i的值為9的倍數(shù)時(shí),印出i的值,若不是9的倍數(shù)(即i%9!=0)程式即執(zhí)行continue敘述語法,程式會(huì)跳過system.out.println(“i”)直接進(jìn)行下一個(gè)迴圈的開始。65[Java2語言實(shí)務(wù)]【程式說明】65[Java2語言實(shí)務(wù)]Ex3_3_201. classDemoBreakAndContinue_2{

02. publicstaticvoidmain(String[]args){

03. for(inti=1;i<=20;i++){

04. if(i%10==0)continue;

05.

06. if(i==20)break;

07. System.out.println(i);

08 }

09. System.out.println("afterbreak");

10. }

11. }66[Java2語言實(shí)務(wù)]Ex3_3_201. classDemoBreakAn執(zhí)行結(jié)果:123456789111213141516171819afterbreak67[Java2語言實(shí)務(wù)]執(zhí)行結(jié)果:167[Java2語言實(shí)務(wù)]<<程式說明>>第3~8行: for(inti=1;i<=20;i++){ if(i%10==0)continue; //下一個(gè)迴圈 if(i==20)break;//跳出For迴圈 System.out.println(i);//在螢?zāi)簧巷@現(xiàn)出i值 }定義一個(gè)for迴圈,i作為控制變數(shù),從開始到20時(shí)結(jié)束,每次i改變的數(shù)值為加1並將i的值顯示在螢?zāi)簧?。但i的值為10的倍數(shù)時(shí)則跳出此次迴圈,並執(zhí)行下一個(gè)迴圈,直到i=20時(shí)執(zhí)行break離開迴圈,並顯示afterbreak字串。因此結(jié)果中不會(huì)顯示i=10,i=20這兩個(gè)數(shù)字。68[Java2語言實(shí)務(wù)]<<程式說明>>第3~8行:68[Java2語言實(shí)務(wù)3-4、函式呼叫69[Java2語言實(shí)務(wù)]3-4、函式呼叫69[Java2語言實(shí)務(wù)]3-4 函式呼叫(FunctionCall)當(dāng)我們在寫Java程式時(shí),常常會(huì)發(fā)現(xiàn):相似的程式碼有重複使用的情形,這時(shí)我們可以把重複使用的程式段落,改寫成函式的形式,讓它有獨(dú)立且可以再被使用的功能,使Java程式更簡潔,更容易閱讀、維護(hù)與撰寫。70[Java2語言實(shí)務(wù)]3-4 函式呼叫(FunctionCall)70[Ja【語法】宣告副程式的語法格式為【語法】[函式型態(tài)]函式名稱([參數(shù)列]){函式主體(運(yùn)算式所組成)[return傳回值;]}【語法說明】函式名稱:函式都要具有一個(gè)特定的名稱。函式型態(tài):函式呼叫結(jié)束時(shí),用來設(shè)定另一個(gè)代表呼叫結(jié)果的變數(shù)值。參數(shù)列:可有可無的,若副程式值時(shí)需要特定的數(shù)值,就會(huì)在函式呼叫時(shí),傳入所需的變數(shù)值,以便在函式主體中被使用。return傳回值:可有可無的,將傳回值傳送到呼叫函式的主程式內(nèi)71[Java2語言實(shí)務(wù)]【語法】宣告副程式的語法格式為【語法】71[Java2語言【語法】副程式的呼叫【語法說明】主程式{ …………函式名稱([參數(shù)列]);…………}【語法說明】在主程式中可以用呼叫函式的方式,將程式的流程跳至函式中執(zhí)行,在函式執(zhí)行完畢後,再跳回主程式呼叫函式的下一敘述繼續(xù)執(zhí)行。呼叫函式的方法為,在要執(zhí)行函式的地方寫上函式的名稱及“()”並加上“;”,代表一個(gè)敘述。在"()"中,若函式宣告時(shí)具有參數(shù)列,呼叫時(shí)就要加上對應(yīng)數(shù)量及型態(tài)的常數(shù)或變數(shù)。72[Java2語言實(shí)務(wù)]【語法】副程式的呼叫【語法說明】72[Java2語言實(shí)務(wù)Ex3_4_101. classDemoFunction{02. publicstaticvoidmain(String[]args){03. intx=15,y=25;04. intz=0;05. z=Add(x,y);06. System.out.println(z);07. } 08. publicstaticintAdd(inti,intj)09. {10. intsum=0;11. sum=i+j;12. returnsum;13. }14.15. }【執(zhí)行結(jié)果】4073[Java2語言實(shí)務(wù)]Ex3_4_101. classDemoFunction【程式說明】第2行:publicstaticvoidmain(String[]args){ 程式由main()開始執(zhí)行(main也是一個(gè)函式,但main是一個(gè)很特別的函式)。第3~4行:intx=15,y=25,intz=0; 定義整數(shù)變數(shù)x、y、z,並依序設(shè)定初值分別為x=15,y=25,intz=0。第5行:z=Add(x,y); 執(zhí)行到Add(x,y)時(shí),主程式會(huì)以呼叫函式的方式,將程式執(zhí)行的流程改變到函式publicstaticintAdd(inti,intj)中執(zhí)行,其中publicstaticint定義了函式傳回值,也稱為函式的型態(tài),並將參數(shù)x的值放入到i中,y的值會(huì)放入j中。在函式中,宣告整數(shù)變數(shù)sum,用來存放參數(shù)i+j的加總結(jié)果值,並將sum值傳回主程式中。z=Add(x,y);表示會(huì)用變數(shù)z承接副程式的傳回值。第6行:System.out.println(z); 將變數(shù)z的值40印在螢?zāi)簧稀?4[Java2語言實(shí)務(wù)]【程式說明】第2行:publicstaticvoidEx3_4_201. classDemoFunction_2{02. publicstaticvoidmain(String[]args){03. intx=15,y=25;04. intw,z=0;05. w=Sub((z=Add(x,y)),y);06. System.out.println(w);07. }08. publicstaticintAdd(inti,intj)09. {10. intsum=0;11. sum=i+j;12. returnsum;13. }14. publicstaticintSub(inti,intj)15. {16. intsum=0;17. sum=i-j;18. returnsum;19. }}75[Java2語言實(shí)務(wù)]Ex3_4_201. classDemoFunction_<<程式說明>>第3~4行:intx=15,y=25,w,z=0;定義整數(shù)變數(shù)x,y,w,z並依序設(shè)定初值分別為x=15,y=25,w=0,z=0。第5行:w=Sub((z=Add(x,y)),y); 執(zhí)行到Sub((z=Add(x,y)),y)時(shí),主程式會(huì)先對z=Add(x,y)及y求右值,再呼叫函式sub。但此時(shí)z=Add(x,y)又呼叫另一函式Add(x,y),將程式執(zhí)行流程改變到程式publicstaticintAdd(inti,intj),其中publicstaticint定義了函式的傳回值,並將x傳入i中,將y值傳入j中,z=Add(x,y)表示會(huì)用變數(shù)z承接Add()函式傳回值;同理再把z,y傳入Sub(i,j)經(jīng)運(yùn)算後得出w=15。第6行:將w的結(jié)果值顯示在螢?zāi)弧?6[Java2語言實(shí)務(wù)]<<程式說明>>第3~4行:intx=15,y=25[本章摘要]在本章中,討論了如何以控制敘述改變程式執(zhí)行的順序,並分成四類不同的控制敘述。以下配合本章的內(nèi)容及範(fàn)例,簡要說明各類控制敘述的使用時(shí)機(jī)及語法的注意事項(xiàng):(1)判斷的控制敘述:使用時(shí)機(jī)為因條件的不同處理不同的運(yùn)算時(shí),語法有if,if-else,switch-case。其中switch-case語法格式要特別注意有無break時(shí)的差異。(2)迴圈的控制敘述:使用時(shí)機(jī)為需重複處理相同的運(yùn)算時(shí)。語法有for、while、do-while,需特別注意控制變數(shù)的處理,避免出現(xiàn)無窮迴圈或其他的錯(cuò)誤。(3)分支的控制敘述:使用時(shí)機(jī)為終止或略過迴圈,語法有break、continue。需要特別注意是break是跳到迴圈後面離開迴圈,而continue是暫停本次迴圈的執(zhí)行並跳到迴圈的開始重新進(jìn)入迴圈。 最後,概要說明如何透過副程式的宣告及呼叫,改變程式執(zhí)行順序。並藉由副程式的呼叫來達(dá)到精簡程式碼的數(shù)量及結(jié)構(gòu),詳細(xì)請參閱第五章。77[Java2語言實(shí)務(wù)][本章摘要]在本章中,討論了如何以控制敘述改變程式執(zhí)行的順序第三章習(xí)題[習(xí)題]1.設(shè)計(jì)出一程式,輸入四個(gè)整數(shù),分別印出其中最大值與最小值。2.設(shè)計(jì)出一程式,輸入一整數(shù),代表月份,若是2-4月份,則印出“Spring”;若是5-7月份,則印出“Summer”;若是8-10月份,則印出“Fall”;若是11-12或1月份,則印出“Winter”。3.設(shè)計(jì)出一程式,列印出九九乘法表。4.設(shè)計(jì)出一程式,計(jì)算4!(階乘)的值。78[Java2語言實(shí)務(wù)]第三章習(xí)題[習(xí)題]78[Java2語言實(shí)務(wù)]5.設(shè)計(jì)一巢狀迴圈列印遞減的星號;

如輸入數(shù)字5則依序列印出5,4,3,2,1倒三角形星號圖***************6.設(shè)計(jì)一程式,用迴圈表示輸入1-7數(shù)字則顯示對應(yīng)星期(星期一、星期二......星期天),若非1-7顯示輸入錯(cuò)誤,直至輸入0則程式結(jié)束。7.設(shè)計(jì)出一程式能依輸入的數(shù)字N,遞迴地呼叫一個(gè)能列印字串"HelloWorld!"的函數(shù)N次。。79[Java2語言實(shí)務(wù)]5.設(shè)計(jì)一巢狀迴圈列印遞減的星號;

如輸入數(shù)字5則依第三章、控制程式的行為本章大綱 3-1、判斷敘述 3-2、迴圈敘述 3-3、分支敘述 3-4、函式呼叫80[Java2語言實(shí)務(wù)]第三章、控制程式的行為本章大綱1[Java2語言實(shí)務(wù)]循序敘述與控制敘述但真正在使用的程式,幾乎每一個(gè)都會(huì)需要透過特定的敘述(Statement)要求程式做執(zhí)行順序的改變。不會(huì)要求改變流程的敘述,稱為”循序敘述”。如宣告,加減運(yùn)算等;會(huì)改變流程的敘述稱為”控制敘述”。Java的控制敘述:判斷(Decision)是用來判斷當(dāng)某個(gè)條件成立時(shí),執(zhí)行對應(yīng)的程式處執(zhí)行,例如,考試成績大於60分為及格,則印出及格訊息;迴圈(Looping)是用來表達(dá)可重複性的動(dòng)作,比如說作1加到100的動(dòng)作,連續(xù)加99次;分支(Branch)是用在如中斷迴圈並跳出的情形;副程式呼叫(FunctionCall)是將常用的程式段獨(dú)立出來,在需要時(shí)跳至該處執(zhí)行後,再回原處繼續(xù)執(zhí)行,如此可以簡化程式的設(shè)計(jì),是程式設(shè)計(jì)常用到的技術(shù)。81[Java2語言實(shí)務(wù)]循序敘述與控制敘述但真正在使用的程式,幾乎每一個(gè)都會(huì)需要透過控制敘述表82[Java2語言實(shí)務(wù)]控制敘述表3[Java2語言實(shí)務(wù)]3-1、判斷敘述83[Java2語言實(shí)務(wù)]3-1、判斷敘述4[Java2語言實(shí)務(wù)]3-1判斷敘述:if及if-else,switch-case在真實(shí)世界中,我們常常要面對許多根據(jù)條件作判斷(Decision)結(jié)果,執(zhí)行不同動(dòng)作的情形。Java三種判斷敘述的分類:

判斷情形關(guān)鍵字單執(zhí)行條件判斷敘述if雙執(zhí)行條件判斷敘述if-else多重條件判斷敘述if-elseif,switch-case84[Java2語言實(shí)務(wù)]3-1判斷敘述:if及if-else,switch-case(1)單執(zhí)行條件判斷敘述if 當(dāng)程式執(zhí)行到if判斷運(yùn)算式時(shí),會(huì)根據(jù)條件判斷,若結(jié)果為真(true),執(zhí)行運(yùn)算式;若結(jié)果為假(false),則不執(zhí)行。【語法】if(條件運(yùn)算式)運(yùn)算式;85[Java2語言實(shí)務(wù)](1)單執(zhí)行條件判斷敘述if 當(dāng)程式執(zhí)行到if判斷運(yùn)算式時(shí)【語法說明-大括號存在的差異性】請注意if中運(yùn)算式,可以是單一敘述也可以是加上大括弧的一連串運(yùn)算式集合完成較複雜的功能。在多行敘述時(shí)要,以指定運(yùn)算式敘述的範(fàn)圍,否則運(yùn)算式的範(fàn)圍會(huì)誤為只有一行,圖3-2說明運(yùn)算集合中大括號存在的差異性。86[Java2語言實(shí)務(wù)]【語法說明-大括號存在的差異性】請注意if中運(yùn)算式,可以圖3-2運(yùn)算集合中大括號存在的差異性圖87[Java2語言實(shí)務(wù)]圖3-2運(yùn)算集合中大括號存在的差異性圖8[Java2語言Ex3_1_1【大括號存在的差異性範(fàn)例3-1】3-1Demoif.javaclassDemoif{publicstaticvoidmain(String[]args){ intx; inty; intz;

x=2; y=1; z=3;

if(x<5){ y=y-1; z=z+3; } System.out.println("x="+x+",y="+y+",z="+z);}}

【執(zhí)行結(jié)果】x=2,y=0,z=6【說明】[第4~6行]intx;inty;intz;三行程式宣告三個(gè)整數(shù)變數(shù)的名稱分別為x、y、z。[第8~10行]x=2;y=1;z=3;為設(shè)定x、y、z的值分別為整數(shù)2、1、3。[第12行]if(x<5)判斷x的值是否小於5,若判斷的結(jié)果為true,程式進(jìn)入if包含的內(nèi)運(yùn)算式執(zhí)行y=y-1;及z=z+3;,[第15行]System.out.println("x="+x+",y="+y+",z="+z);使用System.out.println()分別印出x、y、z的值至螢?zāi)簧稀?8[Java2語言實(shí)務(wù)]Ex3_1_1【大括號存在的差異性範(fàn)例3-1】3-1DEx3_1_201. classDemoif_2{02. publicstaticvoidmain(String[]args){03. intx=2;04. inty=1;05. intz=0; 06. System.out.println(“Beforeswap:x=“+x+”,y=“+y);07. if(x>y){08. z=y;09. y=x;10. x=z; 11. } 12. System.out.println(“Afterswap:x="+x+",y="+y,"z="+z);13. }14. }[執(zhí)行結(jié)果]Beforeswap:x=2,y=1Afterswap:x=1,y=289[Java2語言實(shí)務(wù)]Ex3_1_201. classDemoif_2{10[<<範(fàn)例說明>>

[第3~5行]宣告三個(gè)整數(shù)變數(shù)x、y、z並設(shè)定其值分別為2、1、0。[第7~9行] 判斷x值是否大於y,若判斷的結(jié)果為true,程式會(huì)進(jìn)入if後由大括號所包含的運(yùn)算式,依序執(zhí)行z=y;y=x;x=z;三行敘述,這三行敘述是典型x、y兩個(gè)變數(shù)內(nèi)容互換的寫法,其中z變數(shù)式當(dāng)作中間暫存值,將y的值先保留下來。所以當(dāng)執(zhí)行y=x後才能將原來的值由z變數(shù)再設(shè)定給x變數(shù)。

[第12行]使用System.out.println()分別列印x、y的值至螢?zāi)簧稀?0[Java2語言實(shí)務(wù)]<<範(fàn)例說明>>

11[Java2語言實(shí)務(wù)](2)雙條件判斷 if-else雙條件判斷 if-else:也包含了條件“不成立”時(shí)所要執(zhí)行的另一個(gè)運(yùn)算式。當(dāng)if判斷結(jié)果為true時(shí),程式會(huì)執(zhí)行if之後的運(yùn)算式部分;當(dāng)if判斷結(jié)果為false時(shí),程式會(huì)執(zhí)行else之後的運(yùn)算式部分?!菊Z法】 if(條件運(yùn)算式) 執(zhí)行運(yùn)算式一; else 執(zhí)行運(yùn)算式二;91[Java2語言實(shí)務(wù)](2)雙條件判斷 if-else雙條件判斷 if-else:92[Java2語言實(shí)務(wù)]13[Java2語言實(shí)務(wù)]Ex3_1_3(1) 若有一個(gè)程式在開始時(shí)設(shè)定一個(gè)整數(shù)代表考試的成績,若成績大於60分則螢?zāi)伙@示及格訊息;若小於六十分則螢?zāi)伙@示不及格訊息。93[Java2語言實(shí)務(wù)]Ex3_1_3(1) 若有一個(gè)程式在開始時(shí)設(shè)定一個(gè)整數(shù)Ex3_1_3(2)3-2DemoPass.javaclassDemoPass{publicstaticvoidmain(String[]args){ intscore; score=75;

if(score>=60){ System.out.println("Youpassedthetest!"); } else{ System.out.println("Youdidnotpassthetest!"); } }}【執(zhí)行結(jié)果】Youpassedthetest!94[Java2語言實(shí)務(wù)]Ex3_1_3(2)3-2DemoPass.java15Ex3_1_3範(fàn)例說明第3~4行:intscore;score=75;首先宣告名稱為score的整數(shù)變數(shù),並設(shè)定其值為75;第6~11行if(score>=60){ System.out.println("Youpassedthetest!"); } else{ System.out.println("Youdidnotpassthetest!"); }判斷成績是否大於或等於60分,若結(jié)果為true,則執(zhí)行System.out.println(“Youpassedthetest!”);印出及格訊息;若結(jié)果為false,印出不及格訊息,在範(fàn)例中score的值為75,所以if條件式會(huì)為true。95[Java2語言實(shí)務(wù)]Ex3_1_3範(fàn)例說明第3~4行:intscore;Ex3_1_401. classDemoPass_2{02. publicstaticvoidmain(String[]args){03. intscore,num;04. score=50;05.06. if(score>=60){07. num=score-60;08. } 09. else{10. num=60-score;11. }12. System.out.println("Thedifferenceto60is"+num+"!");13. }14. }執(zhí)行結(jié)果:Thedifferenceto60is10!

96[Java2語言實(shí)務(wù)]Ex3_1_401. classDemoPass_2{1<<範(fàn)例說明>>

第3~4行:宣告名稱為score、num兩個(gè)整數(shù)變數(shù)各代表實(shí)得成績與60分的差距,並設(shè)定score值為50。

第5~10行:判斷成績是否大於或等於60分,若結(jié)果為true,則執(zhí)行num=score-60;若結(jié)果為false,則執(zhí)行num=60-score。範(fàn)例中score=50,所以if條件為false,執(zhí)行後得到num的值為10。

第11行:無論if結(jié)果為何,均執(zhí)行System.out.println("Thedistanceto60is"+num+"!");97[Java2語言實(shí)務(wù)]<<範(fàn)例說明>>

18[Java2語言實(shí)務(wù)](3)if的多重條件判斷敘述

當(dāng)程式需要作一連串的判斷時(shí),可以利用

多個(gè)單一判斷語法組成多重判斷,判斷式中的運(yùn)算式或變數(shù)會(huì)逐一單獨(dú)地被判斷,

根據(jù)判斷結(jié)果的不同,執(zhí)行不同的運(yùn)算式。這樣的結(jié)構(gòu)類似ifelse-if,

其實(shí)是多層if的應(yīng)用。98[Java2語言實(shí)務(wù)](3)if的多重條件判斷敘述當(dāng)程式需要作一連串的判斷時(shí)(3)多重條件判斷(cont.)【應(yīng)用語法】以多層if形成if-elseif多重判斷的應(yīng)用格式為if(條件運(yùn)算式一)運(yùn)算式一;elseif(條件運(yùn)算式二)運(yùn)算式二;………elseif(條件運(yùn)算式n)運(yùn)算式n;else運(yùn)算式n+1;99[Java2語言實(shí)務(wù)](3)多重條件判斷(cont.)【應(yīng)用語法】以多層if形成i【應(yīng)用語法說明】當(dāng)程式執(zhí)行時(shí),若if的條件運(yùn)算式一為true時(shí),會(huì)執(zhí)行運(yùn)算式一,若其為false時(shí),程式執(zhí)行次一elseif判斷式。同樣的,若elseif的條件運(yùn)算式為true時(shí),會(huì)執(zhí)行對應(yīng)的運(yùn)算式,若其為false時(shí),程式會(huì)執(zhí)行次一elseif判斷式,這樣的判斷會(huì)逐一地執(zhí)行,直到有一個(gè)條件式為true或執(zhí)行最後else的運(yùn)算式部份。100[Java2語言實(shí)務(wù)]【應(yīng)用語法說明】當(dāng)程式執(zhí)行時(shí),21[Java2語言實(shí)務(wù)]【應(yīng)用語法說明】(cont.)if(條件運(yùn)算式一)//第一層運(yùn)算式一;elseif(條件運(yùn)算式二)//第二層 運(yùn)算式二;………elseif(條件運(yùn)算式n)//第n層運(yùn)算式n;else運(yùn)算式n+1;這樣的語意請比較switch敘述的語法101[Java2語言實(shí)務(wù)]【應(yīng)用語法說明】(cont.)if(條件運(yùn)算式一)//第Ex3_1_5例如,若有一個(gè)程式在開始時(shí)設(shè)定一個(gè)整數(shù)變數(shù)代表考試的成績,並依下列規(guī)則評等:90分以上A等;80到89分為B等;70分到79分為C等;60分到69分為D等;0分到59分為E等,若輸入的成績小於0分,或者大於100分,則印出錯(cuò)誤訊息。把問題的邏輯想法表示成”成績評等程式流程圖”。102[Java2語言實(shí)務(wù)]Ex3_1_5例如,若有一個(gè)程式在開始時(shí)設(shè)定一個(gè)整數(shù)變數(shù)代Ex3_1_501. classDemoScore{02. p

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論