版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
JAVA語言程序設(shè)計西藏民族學(xué)院張孝飛1語句和復(fù)合語句分支結(jié)構(gòu)(選擇結(jié)構(gòu))循環(huán)結(jié)構(gòu)跳轉(zhuǎn)語句本章主
要內(nèi)容第四章流程控制23Java語言中語句可以是以分號“;”結(jié)尾的簡單語句,也可以是用一對花括號“{}”括起來的復(fù)合語句。Java語言的復(fù)合語句與C++復(fù)合語句不同的是:Java語言不允許在兩個嵌套的復(fù)合語句內(nèi)聲明兩個同名的變量。Java中的注釋形式:單行://多行:/**/文件注釋(Java特有的):/***/
文件注釋產(chǎn)生一個HTML文檔,從而為程序提供文檔說明。publicstaticvoidmain(String[]args){
inta;……{intb;
inta;//錯誤,因變量a前面已定義……}}4.1語句與復(fù)合語句34語句1圖4.1順序結(jié)構(gòu)語句24.2順序結(jié)構(gòu)4if語句1.簡單的條件語句語句的格式如下:if(表達式){ 語句;}圖4-1簡單的條件語句4.3Java分支結(jié)構(gòu)5(1)放在if之后的括號里的只能是一個邏輯表達式,即這個表達式的返回值只能是true或false。(2)如果表達式的值為true,則執(zhí)行語句;如果表達式的值為false,則什么也不執(zhí)行。(3)花括號括起來的語句塊可以只有一行語句,也可以由多行代碼構(gòu)成。一個語句塊通常被當(dāng)成一個整體來執(zhí)行。如果語句塊只有一行語句時,則可以省略花括號,因為單行語句本身就是一個整體,無須花括號來把它們定義成一個整體。說明:6【例4-1】通過命令行輸入一個人的年齡,判斷其是否為未成年人。importjava.io.*;publicclassTestAge{ publicstaticvoidmain(String[]args)throwsIOException
{
InputStreamReaderin=newInputStreamReader(System.in); BufferedReaderbin=newBufferedReader(in);
intage;System.out.println("請輸入一個年齡,回車");
age=Integer.parseInt(bin.readLine());
if(age<18)
System.out.println("這是一個未成年人!");
}
}72.帶else的條件語句語句的格式如下:if(表達式){ 語句1;}else{語句2;}圖4-2帶else的條件語句8說明:(1)放在if之后的括號里的只能是一個邏輯表達式,即這個表達式的返回值只能是true或false。(2)如果if表達式的值為true,則執(zhí)行語句1;如果表達式的值為false,則執(zhí)行語句2。9【例4-2】判斷一個年份是否為閏年,是則顯示,否則提示某年不是閏年。(閏年的判斷規(guī)則:如果某年能被4整除且不能被100整除;或者某年能被400整除)importjava.io.*;publicclassTestYear{ publicstaticvoidmain(String[]args)throwsIOException
{
InputStreamReaderin=newInputStreamReader(System.in); BufferedReaderbin=newBufferedReader(in);10intyear;System.out.println("請輸入一個年份,回車");year=Integer.parseInt(bin.readLine());
if(year%4==0&&(year%100!=0)||(year%400==0))
System.out.println(year+"是閏年!");elseSystem.out.println(year+"不是閏年!");}}11【例4.3】找出三個整數(shù)中的最大值和最小值。//filename:App4_1.javaif語句的應(yīng)用publicclassApp4_1{publicstaticvoidmain(String[]args){inta=1,b=2,c=3,max,min;if(a>b)max=a;elsemax=b;
12if(c>max)max=c;System.out.println("Max="+max);min=a<b?a:b;min=c<min?c:min;System.out.println("Min="+min);}}1314if多重條件選擇結(jié)構(gòu)(if-else嵌套)if(條件表達式1){語句序列1}elseif(條件表達式2){語句序列2}......elseif(條件表達式n){語句序列n}else{語句序列n+1}圖4.4多重條件選擇結(jié)構(gòu)TF條件表達式1語句序列1TF條件表達式2語句序列2TF條件表達式n語句序列n語句序列n+1條件表達式的結(jié)果必須都是布爾型見例4.44.3分支結(jié)構(gòu)14【例4-5】根據(jù)百分制分數(shù)判定成績等級,標(biāo)準如下: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';15
elseif(score>=80)ch='B';elseif(score>=70)ch='C';elseif(score>=60)ch='D'; elsech='E';System.out.println("等級"+ch);}}16Java提供了多分支選擇語——switch語句。使用switch可以測試多個不同的條件并做出相對的響應(yīng)。
switch(表達式){case常量1:語句序列1; [break;]case常量2:語句序列2; [break;]…case常量n:語句序列n; [break;][default:語句序列n+1;]}4.3.2switch語句17(1)表達式的數(shù)據(jù)類型可以是byte、short、char和int類型,不允許是浮點數(shù)類型和long類型。break語句和default子句是可選項。(2)switch語句先計算表達式的值,然后依次匹配case子句后的常量1、常量2……常量n等值,如果遇到匹配的值即執(zhí)行對應(yīng)的語句序列,直到遇到break語句為止;如果case子句中沒有break語句,則程序繼續(xù)匹配剩余case子句后的值。(3)如果沒有一個常量值與表達式的值相等,則執(zhí)行default子句中的語句序列;如果沒有default子句,switch語句不執(zhí)行任何操作。說明:18【例4.6】利用switch語句來判斷用戶從鍵盤上輸入的運算符,再輸出計算后的結(jié)果。//filename:App4_3.javaswitch語句的應(yīng)用publicclassApp4_3{publicstaticvoidmain(String[]args)throwsException{inta=100,b=6;charoper;System.out.print("請輸入運算符:");oper=(char)System.in.read();//從鍵盤讀入一個字符存入變量oper中switch(oper){
19case'+'://輸出a+bSystem.out.println(a+"+"+b+"="+(a+b));break;case'-'://輸出a-bSystem.out.println(a+"-"+b+"="+(a-b));break;case'*'://輸出a*bSystem.out.println(a+"*"+b+"="+(a*b));break;case'/'://輸出a/bSystem.out.println(a+"/"+b+"="+((float)a/b));break;default://輸出字符串System.out.println("輸入的符號不正確!");}}}20【例4.7】從鍵盤上輸入一個月份,然后判斷該月份的天數(shù)。//filename:App4_4.javaswitch語句的應(yīng)用importjava.util.*;publicclassApp4_4{publicstaticvoidmain(String[]args){intmonth,days;Scannerreader=newScanner(System.in);System.out.print("請輸入月份:");month=reader.nextInt();21switch(month){case2:days=28;//2月份是28天break;case4:case6:case9:case11:days=30;//4、6、9、11月份的天數(shù)為30break;default:days=31;//其它月份為31天}System.out.println(month+"月份為【"+days+"】天");}}22【例4-7】根據(jù)用戶輸入1~7之間的一個整數(shù),輸出相對應(yīng)星期的英文單詞。importjava.io.*;publicclassTestWeek{publicstaticvoidmain(String[]args)throwsIOException{ InputStreamReaderin=newInputStreamReader(System.in); BufferedReaderbin=newBufferedReader(in); shortday;System.out.println("請輸入1~7之間的一個整數(shù)");
day=Short.parseShort(bin.readLine()); switch(day) {23case1: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之間的一個數(shù)!"); }}}244.2.3while語句語句的格式如下:while(表達式){循環(huán)體;}圖4-6while語句流程圖25說明:(1)放在while之后的括號里的只能是一個布爾表達式。布爾表達式表示循環(huán)執(zhí)行的條件。(2)循環(huán)體可以是一條語句,也可以是復(fù)合的語句序列。如果只有單個語句需要重復(fù),花括號可以省略。(3)while循環(huán)語句的執(zhí)行流程:先判斷while語句中的布爾表達式的值;如果是false,則不執(zhí)行循環(huán)體,直接執(zhí)行后面的程序;如果是true,則執(zhí)行循環(huán)體語句,然后重新驗證表達式的值,直到表達式的值為假時退出循環(huán)。(4)while語句的特點是先判斷表達式值為真后,再執(zhí)行循環(huán)體。如果while循環(huán)一開始布爾表達式的值就是假的,那么循環(huán)體就根本不被執(zhí)行。26【例4.5】計算Fibonacci序列的前16項。//filename:App4_5.javawhile語句的應(yīng)用publicclassApp4_5{publicstaticvoidmain(String[]args){finalintMAX=15;//定義常量MAX=15inti=0,j=1,k=1;while(k<=MAX){System.out.print(""+i+""+j);i=i+j;//計算Fibonacci序列中的下一個數(shù)j=i+j;//計算Fibonacci序列中的下一個數(shù)k=k+2;//用于改變循環(huán)的條件表達式的值}System.out.println();}}27【例4.6】從鍵盤上輸入一個數(shù),判斷該數(shù)是否是Fibonacci序列中的數(shù)。//filename:App4_6.javawhile語句的應(yīng)用importjava.io.*;publicclassApp4_6{publicstaticvoidmain(String[]args)throwsIOException{inta=0,b=1,n,num;Stringstr;BufferedReaderbuf;buf=newBufferedReader(newInputStreamReader(System.in));28System.out.print("請輸入一個正整數(shù):");str=buf.readLine();//從鍵盤上讀入字符串賦給變量strnum=Integer.parseInt(str);//將str轉(zhuǎn)換成int類型后賦給numwhile(b<num){n=a+b;a=b;b=n;}if(num==b)System.out.println(num+"是Fibonacci數(shù)");elseSystem.out.println(num+"不是Fibonacci數(shù)");}}29【例4.7】利用hasNextXXX()和nextXXX()方法的配合使用來完成鍵盤輸入。//filename:App4_7.javahasNextXXX()方法的使用importjava.util.*;publicclassApp4_7{publicstaticvoidmain(String[]args){doublesum=0;intn=0;System.out.println("請輸入多個數(shù),每輸入一個數(shù)后按Enter或Tab或空格鍵確認:");System.out.println("最后輸入一個非數(shù)字結(jié)束輸入操作");30Scannerreader=newScanner(System.in);//用System.in創(chuàng)建一個Scanner對象while(reader.hasNextDouble())//判斷輸入的數(shù)是否是雙精度浮點型{doublex=reader.nextDouble();//讀取并轉(zhuǎn)換表示double型數(shù)據(jù)的字符序列sum=sum+x;n++;}System.out.print("共輸入了【"+n+"】個數(shù),其和為:"+sum);}}314.2.2do—while語句語句的格式如下:do{ 循環(huán)體;}while(表達式);圖4-5do-while語句流程圖32說明:(1)放在while之后的括號里的只能是一個布爾表達式。布爾表達式表示循環(huán)執(zhí)行的條件。(2)循環(huán)體可以是一條語句,也可以是復(fù)合的語句序列。如果只有單個語句需要重復(fù),花括號可以省略。(3)do—while語句的執(zhí)行過程是:先執(zhí)行一次循環(huán)體再判斷布爾表達式的值,當(dāng)布爾表達式的值為true時重復(fù)執(zhí)行循環(huán)體中的語句,每次執(zhí)行循環(huán)體之后都要重新驗證表達式的值,直到表達式的值為false時退出循環(huán)。一定要有使布爾表達式的值取假的時候,否則會出現(xiàn)死循環(huán)。(4)特點:先執(zhí)行循環(huán)體,然后判斷循環(huán)條件是否成立,do—while語句總是執(zhí)行它的循環(huán)體至少一次。33【例4.8】從鍵盤上輸入一個正整數(shù)n,然后計算1+2+…+n的結(jié)果并輸出。//filename:App4_8.javado-while循環(huán)的應(yīng)用importjava.util.*;publicclassApp4_8{publicstaticvoidmain(String[]args){intn,i=1,sum=0;Scannerbuf=newScanner(System.in);do{System.out.print("輸入正整數(shù):");n=buf.nextInt();}while(n<=0);//要求輸入數(shù)n必須大于0,否則一直要求重新輸入
34while(i<=n)sum+=i++;//計算和System.out.println("1+2+…+"+n+"="+sum);//輸出結(jié)果}}35【例4.9】用輾轉(zhuǎn)相除法求兩個整數(shù)的最大公約數(shù)。//filename:App4_9.javaimportjava.io.*;publicclassApp4_9{publicstaticvoidmain(String[]args)throwsIOException{inta,b,k;Stringstr1,str2;BufferedReaderbuf;buf=newBufferedReader(newInputStreamReader(System.in));System.out.print("請輸入第一個數(shù)a=");str1=buf.readLine();//將輸入的文字賦值給字符串變量str136a=Integer.parseInt(str1);//將str1轉(zhuǎn)成int類型數(shù)據(jù)后賦給aSystem.out.print("請輸入第二個數(shù)b=");str2=buf.readLine();//將輸入的文字賦值給字符串變量str2b=Integer.parseInt(str2);//將str2轉(zhuǎn)成int類型數(shù)據(jù)后賦給bSystem.out.print("gcd("+a+","+b+")=");do{k=a%b;a=b;b=k;}while(k!=0);//若余數(shù)k不為0,則繼續(xù)進行下一次循環(huán)System.out.println(a);}}37【例4.10】已知S=N!,其中N為正整數(shù),從鍵盤上任意輸入一個大于1的整數(shù)M,求滿足S<M時的最大S及此時的N,并輸出S和N的值。//filename:App4_10.java循環(huán)語句的應(yīng)用importjava.util.*;publicclassApp4_10{publicstaticvoidmain(String[]args){intn=1,s=1,m;Scannerreader=newScanner(System.in);38do{System.out.print("請輸入大于1的整數(shù)m:");m=reader.nextInt();}while(m<=1);//若m≤1會一直要求重新輸入,直到m>1為止while(s<m)//判斷n!<m是否成立{s*=n;//計算s=n!n++;}System.out.println("s="+s/(n-1)+"n="+(n-2));//輸出結(jié)果}}39
4.2.1for語句語句的格式如下:for(表達式1;表達式2;表達式3){ 循環(huán)體;}圖4-4for語句流程圖40說明:(1)表達式1一般是一個或多個(用逗號隔開)賦值語句,它用來給循環(huán)控制變量賦初值;表達式2是一個布爾類型的表達式,它決定什么時候退出循環(huán);表達式3一般用來修改循環(huán)變量,控制變量每循環(huán)一次后按什么方式變化。這三個部分之間用“;”分開。41(2)for語句的執(zhí)行過程:在循環(huán)剛開始時,先計算表達式1,在這個過程中,一般完成的是初始化循環(huán)變量或其它變量。根據(jù)表達式2的值來決定是否執(zhí)行循環(huán)體。表達式2是一個返回布爾值的表達式,若該值為假,將不執(zhí)行循環(huán)體,并退出循環(huán);若該值為真,將執(zhí)行循環(huán)體。執(zhí)行完一次循環(huán)體后,計算表達式3。每次執(zhí)行循環(huán)體之后都要重新驗證表達式2的值,直到表達式2的值為false時退出循環(huán)。(3)循環(huán)體可以是一條簡單語句,此時可以省略循環(huán)體外的花括號。循環(huán)體也可以是一組語句塊,此時不可以省略循環(huán)體外的花括號。42【例4.11】求1到10的累加和。//filename:App4_11.javafor循環(huán)語句的應(yīng)用publicclassApp4_11{publicstaticvoidmain(String[]args){inti,n=10,s=0;for(i=1;i<=n;i++)//從1到10進行累加求和s=s+i;System.out.println("Sum=1+……+"+n+"="+s);s=0;System.out.print("Sum=");
43for(i=n;i>1;i--)//從10到2進行累加求和{s+=i;System.out.print(i+"+");//輸出數(shù)i和加號“+”}System.out.println(i+"="+(s+i));//輸出結(jié)果}}444.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)時,如果外層循環(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é)束,則再次計算外層循環(huán)的循環(huán)條件,決定是否再次開始執(zhí)行外層循環(huán)的循環(huán)體。45根據(jù)上面分析,假設(shè)外層循環(huán)的循環(huán)次數(shù)為i次,內(nèi)層循環(huán)的循環(huán)次數(shù)為j次,那么內(nèi)層循環(huán)的循環(huán)體實際上需要執(zhí)行i*j次。嵌套循環(huán)不僅可以是兩層嵌套,還可以是三層嵌套,四層嵌套……不論循環(huán)如何嵌套,我們都可以把內(nèi)層循環(huán)當(dāng)成外層循環(huán)的循環(huán)體來對待,區(qū)別只是這個循環(huán)體里包含了需要反復(fù)執(zhí)行的代碼。循環(huán)嵌套時,要求內(nèi)循環(huán)完全包含在外循環(huán)之內(nèi),不允許出現(xiàn)相互交叉46【例4-17】利用雙重循環(huán),輸出九九乘法表:publicclassTable{publicstaticvoidmain(Strin
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年商鋪購買協(xié)議書規(guī)范文本3篇
- 2024年校園安全:學(xué)校標(biāo)識標(biāo)牌采購合同3篇
- 2024版土地儲備與開發(fā)合作協(xié)議2篇
- 2024年企業(yè)員工借款合同還款能力評估及信用記錄查詢范本3篇
- 2024年施工個人項目管理合同3篇
- 一校一策實施方案范文(5篇)
- 不收禮承諾書(5篇)
- 2024年度生態(tài)環(huán)保攝影項目合同3篇
- 2024年度專利許可使用合同專利權(quán)人與被許可人權(quán)益3篇
- 2024年度石料運輸合同的履行與監(jiān)管協(xié)議6篇
- 2024-2030年中國建筑施工行業(yè)發(fā)展?fàn)顩r規(guī)劃分析報告
- 2025年1月“八省聯(lián)考”考前猜想卷英語試題01 含解析
- 企業(yè)行政總監(jiān)個人簡歷范文
- 2024版智能水務(wù)管理系統(tǒng)設(shè)計與施工合同3篇
- 冬季物業(yè)安全管理培訓(xùn)
- 魯迅先生的生平及其背景
- 2025年1月“八省聯(lián)考”考前猜想卷(含答案解析)
- 2024年度餐飲業(yè)智能點餐系統(tǒng)合同
- GB/T 11981-2024建筑用輕鋼龍骨
- 修大棚合同范例
- 新時代中國特色社會主義理論與實踐學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
評論
0/150
提交評論