Java程序設(shè)計(jì)實(shí)訓(xùn)教程課件項(xiàng)目四 基本控制結(jié)構(gòu)_第1頁
Java程序設(shè)計(jì)實(shí)訓(xùn)教程課件項(xiàng)目四 基本控制結(jié)構(gòu)_第2頁
Java程序設(shè)計(jì)實(shí)訓(xùn)教程課件項(xiàng)目四 基本控制結(jié)構(gòu)_第3頁
Java程序設(shè)計(jì)實(shí)訓(xùn)教程課件項(xiàng)目四 基本控制結(jié)構(gòu)_第4頁
Java程序設(shè)計(jì)實(shí)訓(xùn)教程課件項(xiàng)目四 基本控制結(jié)構(gòu)_第5頁
已閱讀5頁,還剩37頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

項(xiàng)目4基本控制結(jié)構(gòu)任務(wù)一掌握J(rèn)ava分支結(jié)構(gòu)任務(wù)二掌握J(rèn)ava循環(huán)結(jié)構(gòu)項(xiàng)目實(shí)戰(zhàn)一分支結(jié)構(gòu)編程項(xiàng)目實(shí)戰(zhàn)二循環(huán)結(jié)構(gòu)編程4.1任務(wù)一掌握J(rèn)ava分支結(jié)構(gòu)

4.1.1if語句1.簡單的條件語句語句的格式如下:if(表達(dá)式){

語句;}圖4-1簡單的條件語句說明:(1)放在if之后的括號里的只能是一個(gè)邏輯表達(dá)式,即這個(gè)表達(dá)式的返回值只能是true或false。(2)如果表達(dá)式的值為true,則執(zhí)行語句;如果表達(dá)式的值為false,則什么也不執(zhí)行。(3)花括號括起來的語句塊可以只有一行語句,也可以由多行代碼構(gòu)成。一個(gè)語句塊通常被當(dāng)成一個(gè)整體來執(zhí)行。如果語句塊只有一行語句時(shí),則可以省略花括號,因?yàn)閱涡姓Z句本身就是一個(gè)整體,無須花括號來把它們定義成一個(gè)整體?!纠?-1】通過命令行輸入一個(gè)人的年齡,判斷其是否為未成年人。importjava.io.*;publicclassTestAge{ publicstaticvoidmain(String[]args)throwsIOException

{

InputStreamReaderin=newInputStreamReader(System.in); BufferedReaderbin=newBufferedReader(in);

intage;System.out.println("請輸入一個(gè)年齡,回車");

age=Integer.parseInt(bin.readLine());

if(age<18)

System.out.println("這是一個(gè)未成年人!");

}

}【例4-2】已知三個(gè)數(shù),要求將它們按照由小到大的順序輸出。publicclassNumberSort{publicstaticvoidmain(String[]args){inta=5,b=7,c=3,t;

if(a>b)

{t=a;a=b;b=t;}

if(a>c){t=a;a=c;c=t;} if(b>c){t=b;b=c;c=t;}

System.out.println("a="+a+",b="+b+",c="+c);

}

2.帶else的條件語句語句的格式如下:if(表達(dá)式){

語句1;}else{語句2;}圖4-2帶else的條件語句說明:(1)放在if之后的括號里的只能是一個(gè)邏輯表達(dá)式,即這個(gè)表達(dá)式的返回值只能是true或false。(2)如果if表達(dá)式的值為true,則執(zhí)行語句1;如果表達(dá)式的值為false,則執(zhí)行語句2?!纠?-3】判斷一個(gè)年份是否為閏年,是則顯示,否則提示某年不是閏年。(閏年的判斷規(guī)則:如果某年能被4整除且不能被100整除;或者某年能被400整除)importjava.io.*;publicclassTestYear{ publicstaticvoidmain(String[]args)throwsIOException

{

InputStreamReaderin=newInputStreamReader(System.in); BufferedReaderbin=newBufferedReader(in);intyear;System.out.println("請輸入一個(gè)年份,回車");year=Integer.parseInt(bin.readLine());

if(year%4==0&&(year%100!=0)||(year%400==0))

System.out.println(year+"是閏年!");elseSystem.out.println(year+"不是閏年!");}}【例4-4】通過命令輸入兩個(gè)數(shù),把它們由大到小輸出。importjava.io.*;publicclassTestNum{publicstaticvoidmain(String[]args)throwsIOException

{InputStreamReaderin=newInputStreamReader(System.in);BufferedReaderbin=newBufferedReader(in);

floatx,y;

System.out.println("請輸入第一個(gè)數(shù)");x=Float.parseFloat(bin.readLine());System.out.println("請輸入第二個(gè)數(shù)");y=Float.parseFloat(bin.readLine());

if(x>y)

System.out.println(x+","+y);elseSystem.out.println(y+","+x);

}

}3.if語句的嵌套

在if語句中又包含一個(gè)或多個(gè)if語句稱為if語句的嵌套。語句的格式如下:if(表達(dá)式1){ 語句1;}elseif(表達(dá)式2){ 語句2;}…elseif(表達(dá)式m){ 語句m;}else{ 語句n;}【例4-5】根據(jù)百分制分?jǐn)?shù)判定成績等級,標(biāo)準(zhǔn)如下:A:90~100分B:80~89分C:70~79分D:60~69分E:60分以下publicclassTestGrade{publicstaticvoidmain(String[]args){intscore=89;charch;if(score>=90)ch='A';

elseif(score>=80)ch='B';elseif(score>=70)ch='C';elseif(score>=60)ch='D'; elsech='E';System.out.println("等級"+ch);}}

Java提供了多分支選擇語——switch語句。使用switch可以測試多個(gè)不同的條件并做出相對的響應(yīng)。switch(表達(dá)式){case常量1:語句序列1; [break;]case常量2:語句序列2; [break;]…case常量n:語句序列n; [break;][default:語句序列n+1;]}4.1.2switch語句說明:(1)表達(dá)式的數(shù)據(jù)類型可以是byte、short、char和int類型,不允許是浮點(diǎn)數(shù)類型和long類型。break語句和default子句是可選項(xiàng)。(2)switch語句先計(jì)算表達(dá)式的值,然后依次匹配case子句后的常量1、常量2……常量n等值,如果遇到匹配的值即執(zhí)行對應(yīng)的語句序列,直到遇到break語句為止;如果case子句中沒有break語句,則程序繼續(xù)匹配剩余case子句后的值。(3)如果沒有一個(gè)常量值與表達(dá)式的值相等,則執(zhí)行default子句中的語句序列;如果沒有default子句,switch語句不執(zhí)行任何操作?!纠?-6】根據(jù)不同的運(yùn)算符號(+、-、*、/),對兩個(gè)數(shù)執(zhí)行相應(yīng)的運(yùn)算并輸出結(jié)果。importjava.io.*;publicclassTestSign{publicstaticvoidmain(String[]args)throwsIOException{floata=10f,b=5f,c=0.0f;charsign;System.out.println("加法(+),減法(-),乘法(*),除法(/),請選擇運(yùn)算符");sign=(char)System.in.read(); switch(sign) {case'+':c=a+b;break; case'-':c=a-b;break; case'*':c=a*b;break; case'/':c=a/b;break; default:{ System.out.println("輸入符號錯誤!"); c=-1.0f; } } if(c!=-1.0f) System.out.println("a="+a+"b="+b+"c="+c);}}【例4-7】根據(jù)用戶輸入1~7之間的一個(gè)整數(shù),輸出相對應(yīng)星期的英文單詞。importjava.io.*;publicclassTestWeek{publicstaticvoidmain(String[]args)throwsIOException{ InputStreamReaderin=newInputStreamReader(System.in); BufferedReaderbin=newBufferedReader(in); shortday;System.out.println("請輸入1~7之間的一個(gè)整數(shù)");

day=Short.parseShort(bin.readLine()); switch(day) {case1:System.out.println("Monday");break; case2:System.out.println("Tuesday");break;case3:System.out.println("Wednesday");break;case4:System.out.println("Thursday");break;case5:System.out.println("Friday");break;case6:System.out.println("Saturday");break;case7:System.out.println("Sunday");break; default:System.out.println("請輸入1~7之間的一個(gè)數(shù)!"); }}}4.2任務(wù)二掌握J(rèn)ava循環(huán)結(jié)構(gòu)

循環(huán)結(jié)構(gòu)是程序中一種重要的基本結(jié)構(gòu),是指在一定的條件下重復(fù)執(zhí)行某段程序,被重復(fù)執(zhí)行的這段程序稱為“循環(huán)體”。Java還提供了break語句和continue語句,可以控制循環(huán)語句的執(zhí)行情況。1.break語句2.continue語句continue語句的功能和break語句有點(diǎn)類似,區(qū)別是continue語句只是終止本次循環(huán),回到循環(huán)條件處,判斷是否執(zhí)行下一次循環(huán)。而break語句則是完全終止循環(huán)??梢岳斫鉃閏ontinue語句的作用是略過當(dāng)次循環(huán)中剩下的語句,重新開始新的循環(huán)。

4.2.1for語句語句的格式如下:for(表達(dá)式1;表達(dá)式2;表達(dá)式3){ 循環(huán)體;}圖4-4for語句流程圖說明:(1)表達(dá)式1一般是一個(gè)或多個(gè)(用逗號隔開)賦值語句,它用來給循環(huán)控制變量賦初值;表達(dá)式2是一個(gè)布爾類型的表達(dá)式,它決定什么時(shí)候退出循環(huán);表達(dá)式3一般用來修改循環(huán)變量,控制變量每循環(huán)一次后按什么方式變化。這三個(gè)部分之間用“;”分開。(2)for語句的執(zhí)行過程:在循環(huán)剛開始時(shí),先計(jì)算表達(dá)式1,在這個(gè)過程中,一般完成的是初始化循環(huán)變量或其它變量。根據(jù)表達(dá)式2的值來決定是否執(zhí)行循環(huán)體。表達(dá)式2是一個(gè)返回布爾值的表達(dá)式,若該值為假,將不執(zhí)行循環(huán)體,并退出循環(huán);若該值為真,將執(zhí)行循環(huán)體。執(zhí)行完一次循環(huán)體后,計(jì)算表達(dá)式3。每次執(zhí)行循環(huán)體之后都要重新驗(yàn)證表達(dá)式2的值,直到表達(dá)式2的值為false時(shí)退出循環(huán)。(3)循環(huán)體可以是一條簡單語句,此時(shí)可以省略循環(huán)體外的花括號。循環(huán)體也可以是一組語句塊,此時(shí)不可以省略循環(huán)體外的花括號。【例4-8】輸出1~9之間的所有整數(shù)及其平方值。publicclassTestNum1{publicstaticvoidmain(String[]args){ for(inti=0,j=0;i<=9;i++,j=i*i) { System.out.println("i="+i);System.out.println("j="+j);}}}【例4-9】計(jì)算1~100之間的偶數(shù)和。publicclassTestNum2{publicstaticvoidmain(String[]args){intn,s=0; for(n=0;n<=100;n=n+2) s=s+n; System.out.println("2+4+…+100="+s);}}4.2.2do—while語句語句的格式如下:do{ 循環(huán)體;}while(表達(dá)式);圖4-5do-while語句流程圖說明:(1)放在while之后的括號里的只能是一個(gè)布爾表達(dá)式。布爾表達(dá)式表示循環(huán)執(zhí)行的條件。(2)循環(huán)體可以是一條語句,也可以是復(fù)合的語句序列。如果只有單個(gè)語句需要重復(fù),花括號可以省略。(3)do—while語句的執(zhí)行過程是:先執(zhí)行一次循環(huán)體再判斷布爾表達(dá)式的值,當(dāng)布爾表達(dá)式的值為true時(shí)重復(fù)執(zhí)行循環(huán)體中的語句,每次執(zhí)行循環(huán)體之后都要重新驗(yàn)證表達(dá)式的值,直到表達(dá)式的值為false時(shí)退出循環(huán)。一定要有使布爾表達(dá)式的值取假的時(shí)候,否則會出現(xiàn)死循環(huán)。(4)特點(diǎn):先執(zhí)行循環(huán)體,然后判斷循環(huán)條件是否成立,do—while語句總是執(zhí)行它的循環(huán)體至少一次?!纠?-12】計(jì)算1~100之間的整數(shù)和。publicclassTestNum3{publicstaticvoidmain(Stringargs[]){intn=1,s=0;do{s=s+n;}while(++n<=100); System.out.println("1~100之間的整數(shù)和為:"+s);}

}4.2.3while語句語句的格式如下:while(表達(dá)式){

循環(huán)體;}圖4-6while語句流程圖說明:(1)放在while之后的括號里的只能是一個(gè)布爾表達(dá)式。布爾表達(dá)式表示循環(huán)執(zhí)行的條件。(2)循環(huán)體可以是一條語句,也可以是復(fù)合的語句序列。如果只有單個(gè)語句需要重復(fù),花括號可以省略。(3)while循環(huán)語句的執(zhí)行流程:先判斷while語句中的布爾表達(dá)式的值;如果是false,則不執(zhí)行循環(huán)體,直接執(zhí)行后面的程序;如果是true,則執(zhí)行循環(huán)體語句,然后重新驗(yàn)證表達(dá)式的值,直到表達(dá)式的值為假時(shí)退出循環(huán)。(4)while語句的特點(diǎn)是先判斷表達(dá)式值為真后,再執(zhí)行循環(huán)體。如果while循環(huán)一開始布爾表達(dá)式的值就是假的,那么循環(huán)體就根本不被執(zhí)行?!纠?-14】編程輸出100~400之間能同時(shí)被3和7整除的數(shù)。publicclassTestNum5{publicstaticvoidmain(Stringargs[]){intn=100;while(n<=400){if(n%3==0&&(n%7==0))System.out.print(n+"");n++;}}}4.2.4嵌套循環(huán)如果在循環(huán)語句的循環(huán)體中又包含循環(huán)語句,就形成多重循環(huán)結(jié)構(gòu),稱為嵌套循環(huán)。嵌套循環(huán)既可以是for循環(huán)嵌套while循環(huán),也可以是while循環(huán)嵌套do—while循環(huán)……即各種類型的循環(huán)都可以作為外層循環(huán),各種類型的循環(huán)也可以作為內(nèi)層循環(huán)。當(dāng)程序遇到嵌套循環(huán)時(shí),如果外層循環(huán)的循環(huán)條件允許,則開始執(zhí)行外層循環(huán)的循環(huán)體,而內(nèi)層循環(huán)將被外層循環(huán)的循環(huán)體來執(zhí)行——只是內(nèi)層循環(huán)需要反復(fù)執(zhí)行自己的循環(huán)體而已。當(dāng)內(nèi)層循環(huán)執(zhí)行結(jié)束、且外層循環(huán)的循環(huán)體執(zhí)行結(jié)束,則再次計(jì)算外層循環(huán)的循環(huán)條件,決定是否再次開始執(zhí)行外層循環(huán)的循環(huán)體。根據(jù)上面分析,假設(shè)外層循環(huán)的循環(huán)次數(shù)為i次,內(nèi)層循環(huán)的循環(huán)次數(shù)為j次,那么內(nèi)層循環(huán)的循環(huán)體實(shí)際上需要執(zhí)行i*j次。嵌套循環(huán)不僅可以是兩層嵌套,還可以是三層嵌套,四層嵌套……不論循環(huán)如何嵌套,我們都可以把內(nèi)層循環(huán)當(dāng)成外層循環(huán)的循環(huán)體來對待,區(qū)別只是這個(gè)循環(huán)體里包含了需要反復(fù)執(zhí)行的代碼。循環(huán)嵌套時(shí),要求內(nèi)循環(huán)完全包含在外循環(huán)之內(nèi),不允許出現(xiàn)相互交叉【例4-17】利用雙重循環(huán),輸出九九乘法表:publicclassTable{publicstaticvoidmain(Stringargs[]){intm,n;for(m=1;m<=9;m++){for(n=1;n<=9;n++) System.out.print(m+"*"+n+"="+(m*n)+"\t");System.out.println();}}}4.3項(xiàng)目實(shí)戰(zhàn)一分支結(jié)構(gòu)編程1.實(shí)戰(zhàn)內(nèi)容利用if語句編寫程序根據(jù)給定的x值計(jì)算分段函數(shù)y的值。 -x (x≤0) y=4x+8 (0<x≤30) x-10 (x>30)2.實(shí)戰(zhàn)目的掌握分支結(jié)構(gòu)編程方法。3.實(shí)戰(zhàn)過程由于y是關(guān)于x的一個(gè)分段函數(shù),所以要在main()方法中聲明兩個(gè)float類型的變量,分別表示變量x與y。變量x應(yīng)設(shè)計(jì)成可以由用戶從鍵盤輸入;變量y根據(jù)x的取值,計(jì)算不同算式的值,因?yàn)橐袛嘧兞縳的3種取值區(qū)間,本程序采用帶嵌套的if語句來完成多個(gè)條件的判定。程序編寫如下:importjava.io.*;publicclassTestFunction{ publicstaticvoidmain(String[]args)throwsIOException{ InputStreamReaderin=newInputStreamReader(System.in); BufferedReaderbin=newBufferedReader(in); floatx,y;System.out.println("請輸入x的值"); x=Integer.parseInt(bin.readLine()); if(x<=0)y=-x;elseif(x>0&&x<=30)y=4*x+8;elseif(x>30) y=x-10;System.out.println("x="+x); System.out.println("y="+y);}}4.4項(xiàng)目實(shí)戰(zhàn)二循環(huán)結(jié)構(gòu)編程1.實(shí)戰(zhàn)內(nèi)容利用for語句,編程輸出空心菱形,如下所示:************2.實(shí)戰(zhàn)目的熟悉循環(huán)結(jié)構(gòu)編程方法。3.實(shí)戰(zhàn)過程把空心菱形分成上下兩部分分別輸出,每部分分為多行需要使用循環(huán)結(jié)構(gòu),每行的星號和空格都需要使用需要循環(huán)結(jié)構(gòu),所以本程序需要使用兩次二重循環(huán)。聲明兩個(gè)int類型變量i、j,分別用來控制外循環(huán)和內(nèi)循環(huán)的循環(huán)次數(shù)。程

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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

提交評論