版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
JAVA語言程序設計西藏民族學院張孝飛1語句和復合語句分支結構(選擇結構)循環(huán)結構跳轉語句本章主
要內(nèi)容第四章流程控制23Java語言中語句可以是以分號“;”結尾的簡單語句,也可以是用一對花括號“{}”括起來的復合語句。Java語言的復合語句與C++復合語句不同的是:Java語言不允許在兩個嵌套的復合語句內(nèi)聲明兩個同名的變量。Java中的注釋形式:單行://多行:/**/文件注釋(Java特有的):/***/
文件注釋產(chǎn)生一個HTML文檔,從而為程序提供文檔說明。publicstaticvoidmain(String[]args){
inta;……{intb;
inta;//錯誤,因變量a前面已定義……}}4.1語句與復合語句34語句1圖4.1順序結構語句24.2順序結構4if語句1.簡單的條件語句語句的格式如下:if(表達式){ 語句;}圖4-1簡單的條件語句4.3Java分支結構5(1)放在if之后的括號里的只能是一個邏輯表達式,即這個表達式的返回值只能是true或false。(2)如果表達式的值為true,則執(zhí)行語句;如果表達式的值為false,則什么也不執(zhí)行。(3)花括號括起來的語句塊可以只有一行語句,也可以由多行代碼構成。一個語句塊通常被當成一個整體來執(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語句的應用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多重條件選擇結構(if-else嵌套)if(條件表達式1){語句序列1}elseif(條件表達式2){語句序列2}......elseif(條件表達式n){語句序列n}else{語句序列n+1}圖4.4多重條件選擇結構TF條件表達式1語句序列1TF條件表達式2語句序列2TF條件表達式n語句序列n語句序列n+1條件表達式的結果必須都是布爾型見例4.44.3分支結構14【例4-5】根據(jù)百分制分數(shù)判定成績等級,標準如下: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可以測試多個不同的條件并做出相對的響應。
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í)行對應的語句序列,直到遇到break語句為止;如果case子句中沒有break語句,則程序繼續(xù)匹配剩余case子句后的值。(3)如果沒有一個常量值與表達式的值相等,則執(zhí)行default子句中的語句序列;如果沒有default子句,switch語句不執(zhí)行任何操作。說明:18【例4.6】利用switch語句來判斷用戶從鍵盤上輸入的運算符,再輸出計算后的結果。//filename:App4_3.javaswitch語句的應用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語句的應用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ù),輸出相對應星期的英文單詞。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)體可以是一條語句,也可以是復合的語句序列。如果只有單個語句需要重復,花括號可以省略。(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語句的應用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語句的應用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轉換成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ù)字結束輸入操作");30Scannerreader=newScanner(System.in);//用System.in創(chuàng)建一個Scanner對象while(reader.hasNextDouble())//判斷輸入的數(shù)是否是雙精度浮點型{doublex=reader.nextDouble();//讀取并轉換表示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)體可以是一條語句,也可以是復合的語句序列。如果只有單個語句需要重復,花括號可以省略。(3)do—while語句的執(zhí)行過程是:先執(zhí)行一次循環(huán)體再判斷布爾表達式的值,當布爾表達式的值為true時重復執(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的結果并輸出。//filename:App4_8.javado-while循環(huán)的應用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);//輸出結果}}35【例4.9】用輾轉相除法求兩個整數(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轉成int類型數(shù)據(jù)后賦給aSystem.out.print("請輸入第二個數(shù)b=");str2=buf.readLine();//將輸入的文字賦值給字符串變量str2b=Integer.parseInt(str2);//將str2轉成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)語句的應用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));//輸出結果}}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)語句的應用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));//輸出結果}}444.2.4嵌套循環(huán)如果在循環(huán)語句的循環(huán)體中又包含循環(huán)語句,就形成多重循環(huán)結構,稱為嵌套循環(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)。當程序遇到嵌套循環(huán)時,如果外層循環(huán)的循環(huán)條件允許,則開始執(zhí)行外層循環(huán)的循環(huán)體,而內(nèi)層循環(huán)將被外層循環(huán)的循環(huán)體來執(zhí)行——只是內(nèi)層循環(huán)需要反復執(zhí)行自己的循環(huán)體而已。當內(nèi)層循環(huán)執(zhí)行結束、且外層循環(huán)的循環(huán)體執(zhí)行結束,則再次計算外層循環(huán)的循環(huán)條件,決定是否再次開始執(zhí)行外層循環(huán)的循環(huán)體。45根據(jù)上面分析,假設外層循環(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)當成外層循環(huán)的循環(huán)體來對待,區(qū)別只是這個循環(huán)體里包含了需要反復執(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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)學影像科醫(yī)生聘用協(xié)議模板
- 2024年工程質量評估與咨詢服務協(xié)議
- 2024年全年會展服務合作協(xié)議
- 制藥廠制造保溫板安裝協(xié)議
- 玩具企業(yè)銷售經(jīng)理聘任協(xié)議
- 2024年互聯(lián)網(wǎng)金融產(chǎn)品合作協(xié)議
- 2024年工程分期付款協(xié)議書
- 2024年區(qū)域獨家石材供應商協(xié)議
- 推動建設行業(yè)高質量發(fā)展實施方案
- 電子產(chǎn)品研發(fā)合作協(xié)議三篇
- GB/T 625-2024化學試劑硫酸
- 綜合辦公樓裝修改造工程施工組織設計方案
- 三人直播帶貨協(xié)議書范文模板
- 北京郵電大學《云計算》2023-2024學年期末試卷
- QCT1177-2022汽車空調(diào)用冷凝器
- 24春國家開放大學《學前兒童美術教育活動指導》期末大作業(yè)參考答案
- 數(shù)字化時代背景下教師角色的思考
- 和諧相處之道心理健康課件
- 醫(yī)院應急演練:食物中毒
- 中國綜合卒中中心評分標準
- 3.14×1~100的乘法表格
評論
0/150
提交評論