![浙江大學Java程序設計課程第三章教學提綱_第1頁](http://file4.renrendoc.com/view/48fae9986d39b0a1694ec2cebd4dc6c0/48fae9986d39b0a1694ec2cebd4dc6c01.gif)
![浙江大學Java程序設計課程第三章教學提綱_第2頁](http://file4.renrendoc.com/view/48fae9986d39b0a1694ec2cebd4dc6c0/48fae9986d39b0a1694ec2cebd4dc6c02.gif)
![浙江大學Java程序設計課程第三章教學提綱_第3頁](http://file4.renrendoc.com/view/48fae9986d39b0a1694ec2cebd4dc6c0/48fae9986d39b0a1694ec2cebd4dc6c03.gif)
![浙江大學Java程序設計課程第三章教學提綱_第4頁](http://file4.renrendoc.com/view/48fae9986d39b0a1694ec2cebd4dc6c0/48fae9986d39b0a1694ec2cebd4dc6c04.gif)
![浙江大學Java程序設計課程第三章教學提綱_第5頁](http://file4.renrendoc.com/view/48fae9986d39b0a1694ec2cebd4dc6c0/48fae9986d39b0a1694ec2cebd4dc6c05.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
第三章Java流程(liúchéng)控制2023年2月7日ZJU,CS本章為課程的重點之一3.1語句(yǔjù)及程序結(jié)構(gòu)3.2順序結(jié)構(gòu)3.3選擇結(jié)構(gòu)3.4循環(huán)結(jié)構(gòu)3.5跳轉(zhuǎn)語句(yǔjù)第一頁,共36頁。語句(yǔjù)語句,Statement向計算機系統(tǒng)發(fā)出操作的代碼程序由一系列語句組成,語句以“;”結(jié)束Java語句類型表達式語句,如:total=a+b;空語句,只有一個(yīɡè)“;”復合語句,用“{}”將多條語句括起來作為一條語句使用{z=x+y;t=z/10;}方法調(diào)用語句:方法名(參數(shù));如: System.out.println(“JavaLanguage”);控制語句,完成一定的控制功能,包括選擇語句循環(huán)語句轉(zhuǎn)移語句“//”是單行注釋(zhùshì)符,僅對當前行有效多行注釋(zhùshì)用”/*”開始,已”*/”結(jié)束第二頁,共36頁。程序結(jié)構(gòu)任何程序有3種基本的結(jié)構(gòu):順序結(jié)構(gòu)分支結(jié)構(gòu)循環(huán)(xúnhuán)結(jié)構(gòu)順序結(jié)構(gòu)最簡單的一種程序結(jié)構(gòu)程序按照語句的書寫次序順序執(zhí)行第三頁,共36頁。publicclassForce{//計算太陽和地球(dìqiú)之間的萬有引力publicstaticvoidmain(Stringargs[]){doubleg,mSun,mEarth,f;g=6.66667E-8;mSun=1.987E33;mEarth=5.975E27;f=g*mSun*mEarth/(1.495E13*1.495E13);System.out.println("Theforceis"+f);}}順序(shùnxù)結(jié)構(gòu)Demo1,【例3-1】程序運行結(jié)果(jiēguǒ)如下:Theforceis3.5413E27第四頁,共36頁。順序(shùnxù)結(jié)構(gòu)Demo2,【例3-2】//華氏溫度(huáshìwēndù)轉(zhuǎn)換為攝氏溫度:c=5(F-32)/9publicclassConversion{publicstaticvoidmain(Stringargs[]){floatf,c;f=70.0f;c=5*(f-32)/9;System.out.println("Fahrenheit="+f);System.out.println("Centigrade="+c);}}程序運行結(jié)果(jiēguǒ)如下:Fahrenheit=70.0Centigrade=21.11111第五頁,共36頁。順序(shùnxù)結(jié)構(gòu)Demo3,【例3-3】publicclassRoot{//求解(qiújiě)方程ax+b=0的根xpublicstaticvoidmain(Stringargs[]){floata,b,x; a=2.0f; b=6.0f; x=-b/a; //求根xSystem.out.println("a="+a);//OutResultSystem.out.println("b="+b);System.out.println("x="+x);}}//a=Float.parseFloat(args[0]);//b=Float.parseFloat(args[1]);
程序運行結(jié)果(jiēguǒ):a=2.0b=6.0x=-3.0第六頁,共36頁。Eclipse“運行”—Java應用程序?qū)υ捒虻?x)=自變量欄中鍵入:2.06.0運行程序,屏幕輸出結(jié)果如下(rúxià):a=2.0b=6.0x=-3.0這里:2.0和6.0分別作為第1和第2個參數(shù)傳遞給args[0]和args[1]Demo3解析(jiěxī):其中(qízhōng)語句:a=Float.parseFloat(args[0]);轉(zhuǎn)換為浮點數(shù)這是命令行輸入的第一個數(shù)第七頁,共36頁。Demo3解析(jiěxī):命令行輸入的是字符串數(shù)據(jù),需要轉(zhuǎn)換為計算所需要的數(shù)據(jù)類型(lèixíng)將命令行第i個輸入轉(zhuǎn)換為以下類型(lèixíng)的數(shù)據(jù):整型數(shù)a=Integer.parseInt(args[i]);短整型a=Short.parseShort(args[i]);單精度浮點:a=Float.parseFloat(args[i]);雙精度浮點:a=Double.parseDouble(args[i]);第八頁,共36頁。使用(shǐyòng)Scanner類輸入數(shù)據(jù)Scanner是SDK1.5新增的一個類,使用該類創(chuàng)建的對象可掃描控制臺的輸入,即程序直接讀取鍵盤輸入的數(shù)據(jù)Scannerrd=newScanner(System.in);//創(chuàng)建對象rdSystem.in屬于Java標準輸入流調(diào)用(diàoyòng)Scanner類的下列方法讀取控制臺輸入的各類數(shù)據(jù):nextInt()→整型數(shù)據(jù)inta=rd.nextInt();nextDouble()→雙精度數(shù)據(jù)doubleb=rd.nextDouble();nextFloat→單精度數(shù)據(jù)如floatc=rd.nextFloat();next→字符串,輸入的是一個單詞,即空格結(jié)束nextLine→字符串,輸入是一個語句,以回車結(jié)束第九頁,共36頁。使用Scanner類輸入(shūrù)數(shù)據(jù)使用(shǐyòng)Scanner類,java源文件中必須包含importjava.util.Scanner;或importjava.util.*;//導入類庫文件Example:Scannerrd=newScanner(System.in);System.out.println(“請問你的姓名和年齡?");Stringname=rd.nextLine();intage=rd.nextInt();System.out.printf(“哦,你是”+name+“,年齡"+age);第十頁,共36頁。選擇(xuǎnzé)結(jié)構(gòu)選擇(xuǎnzé)結(jié)構(gòu),也叫分支結(jié)構(gòu)Java分支選擇(xuǎnzé)語句:if語句二選一if語句嵌套或switch語句多選一第十一頁,共36頁。if語句(yǔjù)if(布爾表達式)語句(yǔjù)1[else語句(yǔjù)2]布爾表達式語句2falsetrue語句1布爾表達式語句1truefalseElse子句是可選項若有,則布爾表達式的值為true,執(zhí)行語句1,否則,執(zhí)行語句2若無,則布爾表達式的值為true,執(zhí)行語句1,否則,執(zhí)行if語句的后續(xù)(hòuxù)語句語句1或語句2可以是單語句,也可以是復合語句等(花括號括起)第十二頁,共36頁。選擇(xuǎnzé)結(jié)構(gòu)Demo1:【例3-4】輸入(shūrù)2個整數(shù),輸出較小者解題:利用(lìyòng)Scanner類的方法輸入2個整數(shù)If語句進行判斷,輸出較小者【例補3-1】判斷某一年份是否為潤年解題:輸入年份數(shù)據(jù)潤年判斷:條件是能被4整除但又不能被100整除或能被400整除的公元年
year%4==0&&year%100!=0||year%400==0第十三頁,共36頁。選擇(xuǎnzé)結(jié)構(gòu)Demo2:[例3-5]:求解(qiújiě)ax+b=0(a≠0)的根
解題:利用(lìyòng)Scanner類的方法輸入a,b的值浮點數(shù)在計算機中是近似存儲,判斷a的絕對值是否大于0.000001,若是輸出-b/a,若不是,則可以認為a接近0,就不求根了。第十四頁,共36頁。if語句擴展(kuòzhǎn)形式if(布爾表達式1)語句(yǔjù)1elseif(布爾表達式2)語句(yǔjù)2……elseif(布爾表達式n)語句(yǔjù)nelse語句(yǔjù)n+1從上往下依次判斷條件某個布爾表達式的值為true,就執(zhí)行相應的語句(yǔjù)不再判斷其余的條件,轉(zhuǎn)而執(zhí)行if語句(yǔjù)的后續(xù)語句(yǔjù)第十五頁,共36頁。publicclassFunction{publicstaticvoidmain(Stringargs[]){floatx,y;x=Float.parseFloat(args[0]);
if(x<0)y=0;
elseif
(x>0&&x<=10)y=x;
elseif
(x>10&&x<=20)y=10;
else
y=-0.5*x+20;System.out.println("x="+x);System.out.println("y="+y);}}例3-6分段函數(shù)xyx<000<x≤10x10<x≤201020<x0.5x+20條件(tiáojiàn)之間相互排斥第十六頁,共36頁。if語句(yǔjù)嵌套if(布爾表達式1)語句(yǔjù)1elseif(布爾表達式2) 語句(yǔjù)2……else語句(yǔjù)3if語句(yǔjù)中可以包含if語句(yǔjù),形成嵌套if(布爾表達式1){if(布爾表達式2) 語句1[else語句2]
}else語句3注意:else總與離它最近的if配對第十七頁,共36頁。if語句(yǔjù)嵌套Demo【例補3-2】已知一元二次方程的三個系數(shù)(xìshù)a,b,c,求一元二次方程的2個根解題(jiětí):當a、b、c均為零時,方程有無數(shù)解;當a、b為零,c≠0時,方程無解;當a為零,b≠0時,方程解為X=-c/b;當a≠0時,求:d=b2-4ac若d≥0,X=(-b±Sqr(d))/(2a)若d<0時,有兩個不同復根:X=-b/(2a)±Sqr(-d)/(2a)i第十八頁,共36頁。Switch語句(yǔjù)switch(表達式){//計算表達式,得到值case值1:語句塊1;//如果表達式值為值1,執(zhí)行語句塊1[break;]//終止,結(jié)束(jiéshù)switch語句case值2:語句塊2;//如果表達式值為值2,執(zhí)行語句塊2[break;]//終止,結(jié)束(jiéshù)switch語句………case值n:語句塊n;//如果表達式值為值n,執(zhí)行語句塊n[break;]//終止,結(jié)束(jiéshù)switch語句
default://如果表達式值與值1~值n都不同,執(zhí)行語句塊n+1語句塊n+1;}break:終止程序以下部分的執(zhí)行(zhíxíng),執(zhí)行(zhíxíng)switch語句的后續(xù)語句,若無,將繼續(xù)執(zhí)行(zhíxíng)后續(xù)的case子句中的語句塊表達式的數(shù)據(jù)類型可以是byte、char、short和int類型,不允許是浮點數(shù)類型和long類型第十九頁,共36頁?!纠?-7】命令行輸入1~12之間的數(shù)字,輸出(shūchū)對應的月份的英文名publicclassChapter37{publicstaticvoidmain(String[]args){Stringstr="";switch(Integer.parseInt(args[0])){//根據(jù)輸入(shūrù)的值進行多選case1:str="January";break;case2:str="February";break;case3:str="March";break;case4:str="April";break;case5:str="May";break;case6:str="June";break;case7:str="July";break;case8:str="August";break;case9:str="September";break;case10:str="October";break;case11:str="November";break;case12:str="December";break;default:str="TheInputError!";}System.out.println(str);//輸出}}第二十頁,共36頁。多分支(fēnzhī)Demo【例3-8】將百分制成績轉(zhuǎn)化為優(yōu)秀、良好、中等(zhōngděng)、及格和不及格的5級制成績。標準為:優(yōu)秀:90-100分;良好:80-89分;中等(zhōngděng):70-79分;及格:60-69分;不及格:60分以下多分支結(jié)構(gòu)總結(jié):if-else語句可實現(xiàn)switch語句所有(suǒyǒu)的功能,但分支很多的情況下使用switch語句更為簡練,且可讀性強。if-else語句可以基于一個范圍內(nèi)的值或一個條件選擇不同的操作,但switch語句當中的每個常量都必須對應一個單值第二十一頁,共36頁。循環(huán)(xúnhuán)結(jié)構(gòu)循環(huán)語句在一定條件下,反復執(zhí)行(zhíxíng)一段程序代碼被反復執(zhí)行(zhíxíng)的程序代碼稱為循環(huán)體。循環(huán)有兩種類型:計數(shù)控制控制累計執(zhí)行(zhíxíng)循環(huán)體的次數(shù),次數(shù)到則結(jié)束循環(huán)如1+2+3+…+100或98+96+94+…+4+2事態(tài)控制由某些條件決定循環(huán)結(jié)束。如計算一系列正整數(shù)之和,遇負數(shù)停止循環(huán)。Java提供的循環(huán)語句有while語句do…while語句for語句(用于計數(shù)控制)第二十二頁,共36頁。while語句(yǔjù)語句格式:while(布爾表達式){循環(huán)(xúnhuán)體}含義:當表達式結(jié)果為true時,重復執(zhí)行循環(huán)(xúnhuán)體。特點:先執(zhí)行,再判斷,循環(huán)(xúnhuán)可能一次也不執(zhí)行truefalse邏輯表達式循環(huán)體循環(huán)體可以是單一語句,也可以是復合(fùhé)語句(用花括號括起)第二十三頁,共36頁。do…while語句(yǔjù)語句格式do{循環(huán)體}while(布爾表達式);含義:重復執(zhí)行(zhíxíng)循環(huán)體,直到布爾表達式為false。特點:先執(zhí)行(zhíxíng),再判斷,循環(huán)至少執(zhí)行(zhíxíng)一次注意:兩種格式循環(huán)體中至少有一條語句用以改變循環(huán)條件,否則會死循環(huán)true循環(huán)體布爾表達式false第二十四頁,共36頁。循環(huán)(xúnhuán)控制Demo1【例3-9】計算(jìsuàn)10!10!=1*2*3*…*10【例3-10】計算(jìsuàn)1~50之間的奇數(shù)和與偶數(shù)和【例補3-3】輸入一個正整數(shù)n,輸出2/1+3/2+5/3+8/5+...的前n項之和,保留4位小數(shù)(不足4位時,不必用0填滿4位)。解題(jiětí):該序列從第2項起每一項的分子是前一項分子與分母的和分母是前一項的分子【例補3-4】編程:輸入一批非負數(shù),當輸入負數(shù)時,表示輸入結(jié)束。求這批非負數(shù)據(jù)的最大值、最小值和平均值。第二十五頁,共36頁。for語句(yǔjù)for(Exp1;Exp2;Exp3){循環(huán)體}Exp1,Exp2,Exp3指表達式1、2、3執(zhí)行過程執(zhí)行Exp1,給循環(huán)變量(及其它變量)賦初值;計算Exp2的值,若true,執(zhí)行循環(huán)體中的語句;執(zhí)行Exp3,修改(xiūgǎi)循環(huán)變量的值重復計算Exp2的值,若true,執(zhí)行循環(huán)體,直到Exp2的值為falsetrueExp1Exp
2Exp
3false循環(huán)體第二十六頁,共36頁。循環(huán)(xúnhuán)控制Demo2【例3-13】計算Fibonacci數(shù)列中的前20項。Fibonacci數(shù)列:前兩項是1、1,第三項是前二項之和,以后每一項都是前二項之和。即為:1、1、2、3、5、8、13、21、34……【例3-14】判斷(pànduàn)素數(shù)解題:素數(shù)是除了1及自身外,不能被其它數(shù)整除的自然數(shù)。對于一個自然數(shù)k,與2-(k-1)之間的每個整數(shù)進行(jìnxíng)相除如果沒有一個能被整除,則k是素數(shù);否則k不是素數(shù)第二十七頁,共36頁。跳轉(zhuǎn)語句(yǔjù)break語句:使程序的流程(liúchéng)從一個語句塊內(nèi)部跳轉(zhuǎn)出來。通常在switch和循環(huán)語句中使用。continue語句:只在循環(huán)語句中使用。作用是終止當前這輪的循環(huán),跳過本輪循環(huán)剩余的語句,直接進入下一輪循環(huán)。publicstaticvoidmain(String[]args){inti,sum;sum=0;for(i=1;i<=5;i++){sum=sum+i;if(i%2!=0)continue;System.out.println("加個偶數(shù)(ǒushù)"+i);}System.out.println("sum="+sum);}執(zhí)行結(jié)果:加個偶數(shù)2加個偶數(shù)4sum=15第二十八頁,共36頁。多重循環(huán)(xúnhuán)Multi-Loop例如:for(…;…;){//外循環(huán)(xúnhuán)開始 …for(…;…;){//內(nèi)循環(huán)(xúnhuán)開始 … }//內(nèi)循環(huán)(xúnhuán)結(jié)束…}//外循環(huán)(xúnhuán)結(jié)束第二十九頁,共36頁。publicclassPrimes{publicstaticvoidmain(Stringargs[]){inti,k;booleanyes;for(k=2;k<50;k++){//外循環(huán)(xúnhuán),k:2~50yes=true;i=2;while(i<=k-1&&yes){//內(nèi)循環(huán)(xúnhuán),判斷素數(shù) if(k%i==0)yes=false;i++; }if(yes)System.out.print(k+"");}}}【例3-16】求2-50之間的素數(shù)(sùshù)第三十頁,共36頁。循環(huán)(xúnhuán)控制Demo3【例3-15】計算輸出1!、2!、…、5!以及(yǐjí)它們的和解題:外循環(huán)(xúnhuán)k遍歷1-5內(nèi)循環(huán)(xúnhuán)求每個k的階程1!=12!=23!=64!=245!=120Totalsum=153*********************【例補3-5】輸出右邊的圖形解題:外循環(huán)控制行內(nèi)循環(huán)控制每行輸出*個數(shù)第三十一頁,共36頁。常用算法(suànfǎ)總結(jié)歐幾里德算法:輸入2個整數(shù)a和b,比較a和b,將a設置為較大數(shù),b為較小數(shù)(xiǎoshù)。a除以b,得余數(shù)為r判斷r≠0,則b賦值給a,r賦值給b,重復步驟3、4,直至r=0若r=0,則當前的b為最大公約數(shù)最小公倍數(shù)為:(初始的a)*(初始的b)/(當前的b)一、求最值1、最大、最小值思路(sīlù):第1個數(shù)賦值給max,min,對于后
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年電子合同在商業(yè)租賃中的運用
- 2025年示范性建設工程策劃結(jié)算協(xié)議范本
- 2025年辦公空間租賃合作協(xié)議書
- 2025年中小企業(yè)創(chuàng)業(yè)稅收法律咨詢服務合同樣本
- 2025年生態(tài)農(nóng)副產(chǎn)品訂購協(xié)議(八)
- 2025年呼和浩特貨運從業(yè)資格試題及答案詳解
- 2025年陜西貨運資格證模擬考試新題庫
- 2025年上海市租賃協(xié)議范本下載
- 2025年興安貨運從業(yè)資格證模擬考試題目
- 2025年陽泉貨運從業(yè)資格考試題
- 七年級地理下冊 9.2 巴西說課稿 (新版)新人教版
- 二零二五年度電梯安裝工程監(jiān)理合同4篇
- 2025年中國儲備棉管理有限公司招聘筆試參考題庫含答案解析
- 2025年華能新能源股份有限公司招聘筆試參考題庫含答案解析
- 開展課外讀物負面清單管理的具體實施舉措方案
- 初中教學常規(guī)培訓
- 2024-2030年中國兒童室內(nèi)游樂園產(chǎn)業(yè)競爭格局展望及投資策略分析報告
- 六年級下學期開學第一課
- SpaceClaim.中文教程完整版
- 送達地址確認書(樣本)
- 鍛件的結(jié)構(gòu)設計與工藝性分析
評論
0/150
提交評論