版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、1 第第 4 章章 方法方法 Method4.1方法聲明方法聲明4.2方法調(diào)用方法調(diào)用4.3參數(shù)傳遞參數(shù)傳遞4.4遞歸遞歸課程教學(xué)重點之一課程教學(xué)重點之一2概念概念 方法方法( Method )l 這是這是Java的一種命名的一種命名l 和通常意義上的和通常意義上的“方法方法”不同不同l在其他語言中,叫做在其他語言中,叫做“子程序子程序”、“函數(shù)函數(shù)”l如:如:main( )方法方法 “方法方法”的定義的定義l完成特定功能的、相對獨立的完成特定功能的、相對獨立的程序段程序段“方法方法”的特點的特點l可以在不同的程序段中可以在不同的程序段中被多次調(diào)用被多次調(diào)用l 可增強程序結(jié)構(gòu)的清晰度,可增強程
2、序結(jié)構(gòu)的清晰度,提高編程效率提高編程效率 學(xué)習(xí)重點學(xué)習(xí)重點l方法的聲明和調(diào)用方法的聲明和調(diào)用3第一個例子第一個例子編程實現(xiàn)數(shù)學(xué)計算編程實現(xiàn)數(shù)學(xué)計算Y=(1, 2, 100) +(200,201, 298) +(-1,-2 -99) +(51,52, 199)如何實現(xiàn)如何實現(xiàn)?l使用使用4 個循環(huán)個循環(huán)4第一種做法第一種做法public class Sum4_1 public static void main(String args) int i, y=0;for( i=1; i=100; i+) /(1,2, 100)y=y+i;for( i=200; i=298; i+) /+(200,20
3、1,298)y=y+i;for( i=-99; i=-1; i+) /+(-1,-3,-99)y=y+i;for( i=51; i=199; i+) /+(51,52,199)y=y+i; System.out.println(The Rusult: +y);編寫一個累加的編寫一個累加的“子程序子程序”,然后調(diào)用,然后調(diào)用4次?次?The Result: 433765第二種做法第二種做法6第二個例子第二個例子輸入輸入4個整數(shù),求它們中的最大數(shù)。個整數(shù),求它們中的最大數(shù)。實現(xiàn)途徑實現(xiàn)途徑l直接求解直接求解4個數(shù)的大小個數(shù)的大小l編寫從兩個數(shù)中找最大數(shù)的方法,再多次調(diào)用編寫從兩個數(shù)中找最大數(shù)的方法
4、,再多次調(diào)用這個方法這個方法哪個更好?哪個更好?7第一種做法第一種做法8第二種做法第二種做法9什么時候使用什么時候使用“方法方法”用戶程序中經(jīng)常重復(fù)的任務(wù)用戶程序中經(jīng)常重復(fù)的任務(wù)l用戶自己編寫用戶自己編寫“方法方法”代碼代碼常用的任務(wù)常用的任務(wù)由由Java提供提供l數(shù)學(xué)函數(shù)數(shù)學(xué)函數(shù)l輸出操作輸出操作( print、println )l字符串操作字符串操作l界面操作界面操作l104.1 方法聲明方法聲明方法的規(guī)則方法的規(guī)則l先聲明,后使用先聲明,后使用l只能在類只能在類(Class)中聲明中聲明方法聲明的格式方法聲明的格式修飾符修飾符 返回值類型返回值類型 方法名方法名( 參數(shù)表參數(shù)表 ) 變量
5、聲明變量聲明 語句語句方法頭方法頭方法體方法體實現(xiàn)具體功實現(xiàn)具體功能能 return 表達(dá)式;表達(dá)式; /返回方法的結(jié)果,返回方法的結(jié)果, 終止方法的執(zhí)行終止方法的執(zhí)行 11方法聲明格式的說明方法聲明格式的說明修飾符:修飾符:static public private protected 返回值類型返回值類型l返回結(jié)果的數(shù)據(jù)類型,如:返回結(jié)果的數(shù)據(jù)類型,如:int、float、String等等 l無無返回值時用返回值時用void方法名:方法名: 用戶定義的標(biāo)識符,要符合命名規(guī)則用戶定義的標(biāo)識符,要符合命名規(guī)則參數(shù)表:參數(shù)表: 調(diào)用方法時,傳遞的參數(shù)及其數(shù)據(jù)類型調(diào)用方法時,傳遞的參數(shù)及其數(shù)據(jù)類型
6、l相鄰的兩個參數(shù)之間用逗號隔開相鄰的兩個參數(shù)之間用逗號隔開 修飾符修飾符 返回值類型返回值類型 方法名方法名(參數(shù)表參數(shù)表) 變量聲明變量聲明 語句語句 12【例【例4-1】計算平方值的方法】計算平方值的方法static int square(int x) int s; s=x*x; return s; 類型修飾符類型修飾符方法名方法名參數(shù)參數(shù)方法體方法體變量聲明變量聲明語句語句返回語句返回語句方法頭方法頭返回值類型返回值類型134.2 方法調(diào)用方法調(diào)用方法定義方法定義 執(zhí)行方法執(zhí)行方法 調(diào)用方法調(diào)用方法調(diào)用格式一調(diào)用格式一l方法表達(dá)式方法表達(dá)式方法名方法名( 實際參數(shù)表實際參數(shù)表 )l有返回
7、值有返回值的方法,可作為一個的方法,可作為一個表達(dá)式表達(dá)式或者一個具體或者一個具體的的數(shù)值數(shù)值來使用來使用l如:如:y = square(20);14實際參數(shù)實際參數(shù) n形式參數(shù)形式參數(shù) x參數(shù)傳遞參數(shù)傳遞【例【例4-2】 以方法表達(dá)式方式調(diào)用方法以方法表達(dá)式方式調(diào)用方法注意:實參的個數(shù)、順序、類型要和實參一一對應(yīng)注意:實參的個數(shù)、順序、類型要和實參一一對應(yīng)15方法語句方法語句調(diào)用格式二調(diào)用格式二l方法語句方法語句 方法名方法名( 實際參數(shù)表實際參數(shù)表 );l無返回值的方法,以獨立語句的形式調(diào)用無返回值的方法,以獨立語句的形式調(diào)用l方法前面的類型修飾符為方法前面的類型修飾符為 void 16【
8、例【例4-3】 以方法語句方式調(diào)用方法以方法語句方式調(diào)用方法方法語句方法語句17【例【例4-4】無參方法】無參方法有些方法沒有輸入?yún)?shù)有些方法沒有輸入?yún)?shù)18第第4 章習(xí)題章習(xí)題 2編寫兩個方法,分別求兩個整數(shù)的最大公約數(shù)編寫兩個方法,分別求兩個整數(shù)的最大公約數(shù)和最小公倍數(shù)。和最小公倍數(shù)。求最大公約數(shù)求最大公約數(shù)可用可用輾轉(zhuǎn)相除法輾轉(zhuǎn)相除法歐幾里得算法歐幾里得算法(1) a 除以除以b,得余數(shù)為,得余數(shù)為r(2) 若若r0,則,則 b 為最大公約數(shù)為最大公約數(shù) 若若r0,則,則 b 賦值給賦值給 a,r 賦值給賦值給 b,繼續(xù)以上步驟,繼續(xù)以上步驟(3) 經(jīng)過有限步后,經(jīng)過有限步后,r = 0
9、最小公倍數(shù)最小公倍數(shù)為為a*b/最大公約數(shù)最大公約數(shù)a b r9 6 36 3 0r = a % b19第第4 章習(xí)題章習(xí)題 2 程序一程序一 20第第4 章習(xí)題章習(xí)題 2 程序二程序二 輸入:輸入: 8 6最大公約數(shù)是最大公約數(shù)是 2最小公倍數(shù)是最小公倍數(shù)是 24輸入:輸入: 5 3無最大公約數(shù)無最大公約數(shù)最小公倍數(shù)是最小公倍數(shù)是 15輸入:輸入: 675 351最大公約數(shù)是最大公約數(shù)是 27最小公倍數(shù)是最小公倍數(shù)是 877521第第4 章習(xí)題章習(xí)題 6編寫方法,判斷一個三位數(shù)是否是水仙花數(shù)編寫方法,判斷一個三位數(shù)是否是水仙花數(shù)方法的返回值方法的返回值ltrue是水仙花數(shù)是水仙花數(shù)lfals
10、e不是水仙花數(shù)不是水仙花數(shù)static boolean isNarcissus(int n) int a, b, c;a=n/100;b=n/10%10;c=n%10;if(n=a*a*a+b*b*b+c*c*c)return true;elsereturn false;22第第4 章習(xí)題章習(xí)題 6 程序程序234.3 參數(shù)傳遞參數(shù)傳遞 參數(shù)傳遞規(guī)則參數(shù)傳遞規(guī)則l調(diào)用帶參數(shù)的方法時,必須提供實參調(diào)用帶參數(shù)的方法時,必須提供實參 l實參實參 形參形參,稱為,稱為參數(shù)傳遞參數(shù)傳遞 l被調(diào)用的被調(diào)用的 方法用實參執(zhí)行方法體方法用實參執(zhí)行方法體 l實參可以是常量、變量、表達(dá)式實參可以是常量、變量、表達(dá)
11、式l所有類型的參數(shù)傳遞都是所有類型的參數(shù)傳遞都是“值傳遞值傳遞”u調(diào)用時把實參的值傳遞給形參調(diào)用時把實參的值傳遞給形參問題問題l如果形參變了,實參會變嗎?如果形參變了,實參會變嗎?24【例【例4-5】交換兩個變量的值】交換兩個變量的值運行結(jié)果運行結(jié)果調(diào)用前:調(diào)用前:u=23 v=10交換前:交換前:x=23 y=10交換后:交換后:x=10 y=23調(diào)用后:調(diào)用后:u=23 v=1025【例【例4-5】值傳遞的例子】值傳遞的例子運行的結(jié)果運行的結(jié)果調(diào)用前:調(diào)用前:u=23 v=10交換前:交換前:x=23 y=10交換后:交換后:x=10 y=23調(diào)用后:調(diào)用后:u=23 v=10說明說明l參
12、數(shù)傳遞:參數(shù)傳遞: u x ;v yl調(diào)用前后:調(diào)用前后:u、v 的值沒有變的值沒有變l交換前后:交換前后:x、y的值改變了的值改變了264.4 遞歸遞歸用自身的結(jié)構(gòu)來描述自身用自身的結(jié)構(gòu)來描述自身典型例子典型例子階乘運算階乘運算遞歸就是自己調(diào)用自己遞歸就是自己調(diào)用自己27【例【例4-6】采用遞歸算法求】采用遞歸算法求n!求求n! 的算法的算法l n! = n(n-1)!l(n-1)! = (n-1)(n-2)!l(n-2)! = (n-2)(n-3)!l l 2! = 21! l 1! = 1遞歸定義遞歸定義 fac(n) = n! lfac(n) = n* fac(n-1)lfac(n)=
13、1 當(dāng)當(dāng)n=1時時static long fac(int n) if(n=1)return 1;elsereturn n*fac(n-1);28【例【例4-6】程序】程序29Factorial( 0) 1Factorial(5) 5Factorial(4)Factorial(4) 4Factorial(3)Factorial(1) 1Factorial(0)Factorial(2) 2Factorial(1)Factorial(3) 3Factorial(2)Factorial (5) 5 24Factorial (4) 4 6Factorial (3) 3 2Factorial (2) 2
14、1Factorial (1) 1 1遞歸實現(xiàn)過程遞歸實現(xiàn)過程遞推和回推遞推和回推facfac(5)=5 fac(4)facfacfacfacfacfacfac (1)fac(4)=4 fac(3)fac(3)=3 fac(2)fac(2)=2 fac(1)30非遞歸算法求非遞歸算法求n!static long fac(int n) long f=1;for (int i=1;i+b); else hanio(n-1, a, c, b); System.out.println(a+-+b); hanio(n-1, c, b, a); hanio(n個金片,個金片,AB) / C為過渡為過渡 if
15、 (n = 1) 直接把金片直接把金片AB else hanio(n-1個金片個金片, AC) 把把n號金片號金片AB hanio(n-1個金片個金片, CB) 38【例【例4-7】漢諾塔(】漢諾塔(Hanoi)問題問題39【例【例4-7】漢諾塔(】漢諾塔(Hanoi)問題問題 P.5340【例【例4-7】漢諾塔(】漢諾塔(Hanoi)問題問題金片為金片為3個個,需,需7步步完成完成金片為金片為64個個,需,需264-1步完成步完成l若每秒若每秒1步,需步,需58萬億年萬億年l若計算機每秒運算若計算機每秒運算100萬次,需萬次,需5800萬年萬年運行結(jié)果:運行結(jié)果:The steps for
16、3 disk are:A-BA-CB-CA-BC-AC-BA-B41【例】十進(jìn)制整數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)【例】十進(jìn)制整數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)設(shè)計方法,實現(xiàn)十進(jìn)制整數(shù)轉(zhuǎn)換成二進(jìn)制設(shè)計方法,實現(xiàn)十進(jìn)制整數(shù)轉(zhuǎn)換成二進(jìn)制l除除2 取余法取余法如如:35 的二進(jìn)制值為的二進(jìn)制值為 100011 2 35 2 17 1 2 8 1 2 4 0 2 2 0 2 1 0 2 0 1nn%2 tn/2nn=0時停止時停止即即n0時重復(fù)時重復(fù)字符串字符串 ss 初值為初值為s = t + sstatic String dectobin(int n) int t; /保存某位二進(jìn)制保存某位二進(jìn)制 String s=; /保存二
17、進(jìn)制數(shù)保存二進(jìn)制數(shù) do t=n%2; /獲得除獲得除2后的余數(shù)后的余數(shù) s=t+s; /拼接拼接 n=n/2; /獲得除獲得除2后的商后的商 while(n0); return s;42【例】十進(jìn)制整數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)【例】十進(jìn)制整數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)43【例】十進(jìn)制整數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)【例】十進(jìn)制整數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)考慮十進(jìn)制整數(shù)有負(fù)數(shù)的情況考慮十進(jìn)制整數(shù)有負(fù)數(shù)的情況l如如:-35 的二進(jìn)制值為的二進(jìn)制值為 -100011static String dectobin(int n) int t; /保存某位二進(jìn)制保存某位二進(jìn)制 String s=; /保存二進(jìn)制數(shù)保存二進(jìn)制數(shù) do t=n%2; /獲
18、得除獲得除2后的余數(shù)后的余數(shù) s=t+s; /拼接拼接 n=n/2; /獲得除獲得除2后的商后的商 while(n0); return s;44import java.util.*;public class T1 static String dTob(int n) String s; if(n0) s=-+dTob(-n); else if(n2) s=+(char)(n+(int)(0); else s=dTob(n/2)+(char)(n%2+(int)0); return s;【例】十進(jìn)制整數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)【例】十進(jìn)制整數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)遞歸方法遞歸方法45Review: about MethodMethod (方法方法) 相當(dāng)于相當(dāng)于函數(shù)函數(shù)或或子程序子程序編寫編寫Method (方法方法) l方法類型(返回值),方法名,形式參數(shù)方法類型(返回值),方法名,形式參數(shù)l在在 class (類類) 中編寫中編寫l不能嵌套不能嵌套調(diào)用調(diào)用Method (方法方法) l格式
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智能交通系統(tǒng)代理服務(wù)合同4篇
- 2025年度智能鋁板裝配一體化工程承包合同4篇
- 2025年度智慧城市建設(shè)項目承包經(jīng)營合同范本8篇
- 2025年度水電工程水土保持與生態(tài)修復(fù)承包合同集錦4篇
- 2025年度體育場館設(shè)施升級改造勞務(wù)分包合同3篇
- 2024年精簡版房地產(chǎn)銷售協(xié)議綱要版
- 2025年度特種車輛租賃與維護服務(wù)協(xié)議3篇
- 2025年度文化創(chuàng)意產(chǎn)業(yè)園區(qū)建設(shè)承包借款合同4篇
- 2025年度智能路燈與充電樁一體化安裝服務(wù)合同3篇
- 2024藝人經(jīng)紀(jì)合同糾紛案例
- 常用靜脈藥物溶媒的選擇
- 2023-2024學(xué)年度人教版一年級語文上冊寒假作業(yè)
- 當(dāng)代西方文學(xué)理論知到智慧樹章節(jié)測試課后答案2024年秋武漢科技大學(xué)
- 2024年預(yù)制混凝土制品購銷協(xié)議3篇
- 2024-2030年中國高端私人會所市場競爭格局及投資經(jīng)營管理分析報告
- GA/T 1003-2024銀行自助服務(wù)亭技術(shù)規(guī)范
- GB/T 18488-2024電動汽車用驅(qū)動電機系統(tǒng)
- 門診特定病種待遇認(rèn)定申請表
- 混合離子交換器使用說明書正本
- 工傷保險待遇及案例分析PPT課件
- 自控工程識圖
評論
0/150
提交評論