十一、方法的使用
第1關(guān):如何定義方法
任務(wù)描述
本關(guān)任務(wù):定義一個(gè)用來(lái)和老師打招呼的方法。
相關(guān)知識(shí)
為了完成本關(guān)任務(wù)你需要掌握:1. 什么是方法; 2. 怎么定義和使用方法。
我們現(xiàn)階段編寫(xiě)的代碼都是放在main函數(shù)中,不過(guò)如果我們要做一個(gè)大型的項(xiàng)目,把所有的代碼都放入main方法中有什么缺陷呢?
代碼龐大;
難以閱讀;
難以維護(hù);
代碼難以重用;
不利于合作開(kāi)發(fā)。
怎么解決呢?
將龐大的程序劃分為不同的功能小塊,逐個(gè)突破,就像手機(jī)和電腦一樣,把一整個(gè)電腦拆分成一個(gè)個(gè)的小功能塊,例如內(nèi)存,CPU等。然后在主板中將這些功能模塊組合。
這里主板就相當(dāng)于main方法,CPU,內(nèi)存這些模塊,就相當(dāng)于我們自己定義的方法,接下來(lái)我們就來(lái)認(rèn)識(shí)一下Java中的方法吧!
什么是方法
方法也叫函數(shù),就是用來(lái)解決一類(lèi)問(wèn)題的代碼的有序組合,是一個(gè)功能模塊。
怎么定義和使用方法
一般情況下,定義一個(gè)方法的語(yǔ)法是:
其中:
訪問(wèn)修飾符:在現(xiàn)階段你只需要記住訪問(wèn)修飾符都用public即可;
返回值類(lèi)型:方法返回值的類(lèi)型,如果方法不返回任何值,則返回值類(lèi)型指定為void;如果方法具有返回值,則需要指定返回值的類(lèi)型,并且在方法體中使用return語(yǔ)句返回值;
方法名:定義的方法的名字,必須使用合法的標(biāo)識(shí)符;
參數(shù)列表:傳遞給方法的參數(shù)列表,參數(shù)可以有多個(gè),多個(gè)參數(shù)間以逗號(hào)隔開(kāi),每個(gè)參數(shù)由參數(shù)類(lèi)型和參數(shù)名組成,以空格隔開(kāi)。
根據(jù)方法是否帶參、是否帶返回值,可將方法分為四類(lèi):
無(wú)參無(wú)返回值方法;
無(wú)參帶返回值方法;
帶參無(wú)返回值方法;
帶參帶返回值方法。
在本關(guān)你需要學(xué)習(xí)的是無(wú)參數(shù)無(wú)返回值方法。
方法的使用分兩步:
第一步,定義方法:
例如:下面代碼定義了一個(gè)方法名為 helloEducoder ,沒(méi)有參數(shù),且沒(méi)有返回值的方法,執(zhí)行的操作為輸出 welcome to educoder。
注意哦:
方法體放在一對(duì)大括號(hào)中,實(shí)現(xiàn)特定的操作;
方法名主要在調(diào)用這個(gè)方法時(shí)使用,需要注意命名的規(guī)范,一般采用第一個(gè)單詞首字母小寫(xiě),其它單詞首字母大寫(xiě)的形式;
現(xiàn)階段我們使用的方法都是static(靜態(tài)的)。
第二步:調(diào)用方法:
輸出:
welcome to educoder編程要求
根據(jù)提示,在右側(cè)編輯器Begin-End處補(bǔ)充代碼,定義一個(gè)方法名為hello的方法用來(lái)和老師打招呼;
調(diào)用此方法輸出如下結(jié)果:
測(cè)試說(shuō)明
平臺(tái)會(huì)對(duì)你編寫(xiě)的代碼進(jìn)行測(cè)試,若與預(yù)期輸出相同,則算通關(guān)。
代碼實(shí)現(xiàn)
package step1;public class HelloWorld {/********** Begin **********///定義一個(gè)方法,用來(lái)和老師打招呼/********** End **********/ public static void main(String[] args) {/********** Begin **********/ helloEducoder();}public static void helloEducoder() {System.out.println("hello teacher!");}/********** End **********/}第2關(guān):掌握無(wú)參有返回值方法的調(diào)用
任務(wù)描述
定義一個(gè)方法,用來(lái)計(jì)算兩門(mén)課程成績(jī)的平均值,并返回結(jié)果。
相關(guān)知識(shí)
如果方法不包含參數(shù),但有返回值,我們稱(chēng)為無(wú)參帶返回值的方法。
例如:下面的代碼,定義了一個(gè)方法名為 numberPlus ,無(wú)參數(shù),但返回值為 int 類(lèi)型的方法,執(zhí)行的操作為計(jì)算兩數(shù)之和,并返回結(jié)果。
在 numberPlus() 方法中,返回值類(lèi)型為 int 類(lèi)型,因此在方法體中必須使用 return 返回一個(gè)整數(shù)值。
調(diào)用帶返回值的方法時(shí)需要注意,由于方法執(zhí)行后會(huì)返回一個(gè)結(jié)果,因此在調(diào)用帶返回值方法時(shí)一般都會(huì)接收其返回值并進(jìn)行處理。如:
回顧與展望
在上一節(jié)中你已經(jīng)掌握了無(wú)參數(shù)無(wú)返回值方法的調(diào)用,這一節(jié)將要掌握有返回值方法的調(diào)用。
一定不可忽視的問(wèn)題
1、 如果方法的返回類(lèi)型為 void ,則方法中不能使用 return 返回值!
2、 方法的返回值最多只能有一個(gè),不能返回多個(gè)值。
3、 方法返回值的類(lèi)型必須兼容,例如,如果返回值類(lèi)型為 int ,則不能返回 String 型值。
編程要求
請(qǐng)根據(jù)任務(wù)描述 ,在編輯器Begin-End中定義一個(gè)名為 calcAvg 的方法,用來(lái)計(jì)算兩門(mén)課程成績(jī)的平均值,并返回結(jié)果。
測(cè)試說(shuō)明
程序會(huì)對(duì)你編寫(xiě)的代碼進(jìn)行測(cè)試:
需要你的程序輸出:
平均成績(jī)?yōu)?#xff1a;87.75
代碼實(shí)現(xiàn)
package setp7; public class HelloWorld {public static void main(String[] args) {/********** Begin **********/// 調(diào)用calcAvg()方法,并將返回值保存在變量avg中double avg = calcAvg(); /********** End **********/System.out.println("平均成績(jī)?yōu)?#xff1a;" + avg);}// 定義一個(gè)返回值為double類(lèi)型的方法/********** Begin **********/public static double calcAvg() {double java = 92.5;double php = 83.0;double avg = (java + php) / 2; // 計(jì)算平均值return avg;// 使用return返回值/********** End **********/} }第3關(guān): 掌握有參數(shù)無(wú)返回值方法的調(diào)用
任務(wù)描述
本關(guān)任務(wù):編寫(xiě)帶參方法計(jì)算兩門(mén)課程考試成績(jī)的平均分。
相關(guān)知識(shí)
有時(shí)方法的執(zhí)行需要依賴于某些條件,就像生活中我們做一件事情時(shí),也許需要前提條件,而方法的參數(shù)就相當(dāng)于前提條件。
我們先來(lái)看一個(gè)帶參數(shù),但沒(méi)有返回值的方法:
/* *帶參無(wú)返回值 */ public static void show(String name){System.out.println(name); }上面的代碼定義了一個(gè) show() 方法,帶有一個(gè)參數(shù) name ,實(shí)現(xiàn)輸出歡迎消息。
調(diào)用帶參方法與調(diào)用無(wú)參方法的語(yǔ)法類(lèi)似,但在調(diào)用時(shí)必須傳入實(shí)際的參數(shù)值。
例如:
public static void main(String[] args) {//調(diào)用方法,得到結(jié)果show("我是Java愛(ài)好者"); }運(yùn)行后控制臺(tái)打印結(jié)果為:
我是Java愛(ài)好者很多時(shí)候,我們把定義方法時(shí)的參數(shù)稱(chēng)為形參,目的是用來(lái)定義方法需要傳入的參數(shù)的個(gè)數(shù)和類(lèi)型;把調(diào)用方法時(shí)的參數(shù)稱(chēng)為實(shí)參,是傳遞給方法真正被處理的值。
一定不可忽視的問(wèn)題:
1、 調(diào)用帶參方法時(shí),必須保證實(shí)參的數(shù)量、類(lèi)型、順序與形參一一對(duì)應(yīng)。
2、 調(diào)用方法時(shí),實(shí)參不需要指定數(shù)據(jù)類(lèi)型,如。
public static void main(String[] args) {//調(diào)用方法,得到結(jié)果show("我是Java愛(ài)好者"); }3、 方法的參數(shù)可以是基本數(shù)據(jù)類(lèi)型,如 int、double 等,也可以是引用數(shù)據(jù)類(lèi)型,如 String、數(shù)組等。
4、 當(dāng)方法參數(shù)有多個(gè)時(shí),多個(gè)參數(shù)間以逗號(hào)分隔。
public static int test(int number1 , int number2){System.out.println("內(nèi)部邏輯"); }編程要求
根據(jù)提示,在右側(cè)編輯器Begin-End處補(bǔ)充代碼,編寫(xiě)并調(diào)用求平均值的方法,傳入兩門(mén)成績(jī),求出平均值。
測(cè)試說(shuō)明*
測(cè)試輸入:90,80
預(yù)期輸出:
測(cè)試輸入:100,90
預(yù)期輸出:
代碼實(shí)現(xiàn)
package setp9;import java.util.Scanner;public class HelloWorld {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int score1 = sc.nextInt(); //第一門(mén)成績(jī)int score2 = sc.nextInt(); //第二門(mén)成績(jī)/********** Begin **********/// 調(diào)用方法,傳入兩門(mén)課程的成績(jī)HelloWorld.calcAvg(score1,score2);/********** End **********/}/** 功能:計(jì)算兩門(mén)課程考試成績(jī)的平均分并輸出平均分* 定義一個(gè)包含兩個(gè)參數(shù)的方法,用來(lái)傳入兩門(mén)課程的成績(jī)*//********** Begin **********/public static void calcAvg(int score1,int score2){int avg=(score1+score2)/2;System.out.print("平均分:"+avg);}/********** End **********/}第4關(guān):掌握有參數(shù)有返回值方法的調(diào)用
任務(wù)描述
本關(guān)任務(wù):定義一個(gè)有參數(shù)有返回值方法(函數(shù))并調(diào)用。
相關(guān)知識(shí)
要完成本關(guān)任務(wù)你需要掌握:1.怎么定義有參數(shù)有返回值的方法,2.怎么調(diào)用。
怎么定義有參數(shù)有返回值的方法
如果方法既包含參數(shù),又帶有返回值,我們稱(chēng)為帶參帶返回值的方法。
例如:下面的代碼,定義了一個(gè) welcome 方法,帶有一個(gè)參數(shù) name ,方法執(zhí)行后返回一個(gè) String 類(lèi)型的結(jié)果。
怎么調(diào)用
調(diào)用帶參帶返回值的方法:
運(yùn)行結(jié)果為: 歡迎你張三豐
編程要求
在Begin-End區(qū)域創(chuàng)建一個(gè) 名為getMax的方法,以兩個(gè)整數(shù)作為參數(shù), 返回兩個(gè)整數(shù)變量較大的值,最后在main方法中調(diào)用該方法,傳入輸入的數(shù)據(jù)。
測(cè)試說(shuō)明
測(cè)試輸入:5,4
預(yù)期輸出:
測(cè)試輸入:2,3
預(yù)期輸出:
代碼實(shí)現(xiàn)
package step3;import java.util.Scanner;public class HelloWorld {public static void main(String[] args) {HelloWorld hello=new HelloWorld();Scanner sc = new Scanner(System.in);int i = sc.nextInt(); //獲取第一個(gè)輸入的整數(shù)int j = sc.nextInt(); //獲取第二個(gè)輸入的整數(shù)int max = hello.getMax(i,j);/********** Begin **********///在這里調(diào)用方法獲取返回值System.out.println( i+"和"+j+"比較,最大值是:" + max );/********** End **********/}/*在這里創(chuàng)建getMax方法,以兩個(gè)整數(shù)作為參數(shù),返回兩個(gè)整數(shù)中較大的值*//********** Begin **********/public static int getMax(int i,int j){if(i>j)return i;elsereturn j;}/********** End **********/ }第5關(guān):掌握數(shù)組作為參數(shù)的使用
任務(wù)描述
本關(guān)任務(wù):將考試成績(jī)排序并輸出,返回成績(jī)的個(gè)數(shù)。
相關(guān)知識(shí)
數(shù)組作為參數(shù)的樣例:
輸出結(jié)果。 1 2 3
實(shí)現(xiàn)思路
定義一個(gè)帶有數(shù)組參數(shù)的方法;
在方法內(nèi)部參考第八章數(shù)組排序?qū)?shù)組排序,并且打印;
返回?cái)?shù)組的長(zhǎng)度信息。
提示
快速輸出數(shù)組的方法:
驗(yàn)貨啦,驗(yàn)貨啦,開(kāi)始你的任務(wù)吧!
編程要求
根據(jù)提示,在右側(cè)編輯器Begin-End處補(bǔ)充代碼,程序給出了部分代碼,您需要參照實(shí)現(xiàn)思路達(dá)到 任務(wù)描述的需求。
測(cè)試說(shuō)明
程序會(huì)對(duì)你編寫(xiě)的代碼進(jìn)行測(cè)試:
需要你的程序輸出下圖所示:
代碼實(shí)現(xiàn)
package setp10;import java.util.Arrays;public class HelloWorld {public static void main(String[] args) {HelloWorld hello=new HelloWorld();int[] scores={79,52,98,81};/********** Begin **********///調(diào)用方法,傳入成績(jī)數(shù)組,并獲取成績(jī)的個(gè)數(shù)int count= hello.sort(scores);/********** End **********/System.out.println("共有"+count+"個(gè)成績(jī)信息!");}/** 功能:將考試成績(jī)排序并輸出,返回成績(jī)的個(gè)數(shù)* *//********** Begin **********/ public static int sort( int[] data ){for(int i=0;i<data.length-1;i++)for(int j=i+1;j<data.length;j++){if(data[i]>data[j]){int temp=data[i];data[i]=data[j];data[j]=temp;}}// 打印出數(shù)組System.out.print("[");for(int i=0;i<data.length-1;i++) System.out.print(data[i]+", "); System.out.print(data[3]+"]"); System.out.println();//返回?cái)?shù)組中元素的個(gè)數(shù)return data.length;} }/********** End **********/第6關(guān):方法的重載
任務(wù)描述
本小節(jié)需要你掌握一個(gè)Java方法重載的小程序,在每一個(gè)重載的方法中打印相應(yīng)的語(yǔ)句。
相關(guān)知識(shí)*
問(wèn): 什么是方法的重載呢?
答: 如果同一個(gè)類(lèi)中包含了兩個(gè)或兩個(gè)以上方法名相同,方法參數(shù)的個(gè)數(shù)、順序或類(lèi)型不同的方法,則稱(chēng)為方法的重載,也可稱(chēng)該方法被重載了。如下所示 3 個(gè)方法名稱(chēng)都為 print ,但方法的參數(shù)有所不同,因此都屬于方法的重載:
問(wèn): 如何區(qū)分調(diào)用的是哪個(gè)重載方法呢?
答: 當(dāng)調(diào)用被重載的方法時(shí),Java會(huì)根據(jù)參數(shù)的個(gè)數(shù)和類(lèi)型來(lái)判斷應(yīng)該調(diào)用哪個(gè)重載方法,參數(shù)完全匹配的方法將被執(zhí)行。如:
public static void main(String[] args) {// 調(diào)用無(wú)參的方法print();// 調(diào)用帶有一個(gè)字符串參數(shù)的方法print("小強(qiáng)");// 調(diào)用帶有一個(gè)整型參數(shù)的方法print("老肖",38);}運(yùn)行結(jié)果:
無(wú)參的print方法 帶有一個(gè)字符串參數(shù)的print方法,參數(shù)值為:小強(qiáng) 您好老肖,今年38歲判斷方法重載的依據(jù):
1、 必須是在同一個(gè)類(lèi)中;2、 方法名相同;3、 方法參數(shù)的個(gè)數(shù)、順序或類(lèi)型不同;4、 與方法的修飾符或返回值沒(méi)有關(guān)系。敲黑板
方法重載:在同一個(gè)類(lèi)中,方法名相同,參數(shù)類(lèi)型不同。
編程要求
在編輯器Begin-End處對(duì)print方法進(jìn)行重載,并通過(guò)傳入不同的參數(shù)調(diào)用匹配的重載方法。
請(qǐng)?jiān)谙鄳?yīng)行中將代碼填寫(xiě)完整。
測(cè)試說(shuō)明
預(yù)期輸出:
代碼實(shí)現(xiàn)
package setp15;/*** @author tangzhiqiang* @date 2018-04-25 22:31*/ public class HelloWorld {public static void main(String[] args) {/********** Begin **********/// 調(diào)用無(wú)參的方法print();// 調(diào)用帶有一個(gè)字符串參數(shù)的方法 print("educoder");// 調(diào)用帶有一個(gè)整型參數(shù)的方法print(666);/********** End **********/}/********** Begin **********/// 無(wú)參print方法的定義 public static void print(){System.out.println("無(wú)參的print方法"); }// 字符串print方法的定義 public static void print(String name){System.out.println("帶有一個(gè)字符串參數(shù)的print方法,參數(shù)值為:"+name);}// 整型print方法的定義 public static void print(int id){System.out.println("帶有一個(gè)整型參數(shù)的print方法,參數(shù)值為:"+id); }/********** End **********/ }第7關(guān):方法通關(guān)挑戰(zhàn)
任務(wù)描述
本關(guān)任務(wù):
定義一個(gè)方法,接收兩個(gè)int類(lèi)型的參數(shù) a和b,求兩個(gè)數(shù)的和,方法名為:getSum;
定義一個(gè)方法,接收三個(gè)double類(lèi)型參數(shù)a,b,c, 返回這三個(gè)數(shù)的平均值 返回值類(lèi)型為double,方法名為:getAvg;
定義一個(gè)方法,接收兩個(gè)整數(shù) a 和b 打印a行 b列的一個(gè)矩形,方法名為:printRect;
定以一個(gè)方法,接收整形數(shù)組為參數(shù),對(duì)這個(gè)數(shù)組進(jìn)行升序排序,最后輸出該數(shù)組,方法名為:sortArr;
定義一個(gè)方法,完成99乘法表的打印,方法名為 :Print99。
相關(guān)知識(shí)
編程要求
根據(jù)任務(wù)描述,在右側(cè)編輯器Begin-End處補(bǔ)充代碼,定義五個(gè)方法,并編寫(xiě)代碼實(shí)現(xiàn)方法對(duì)應(yīng)的功能,達(dá)到輸出要求。
測(cè)試說(shuō)明
我會(huì)對(duì)你編寫(xiě)的代碼進(jìn)行測(cè)試:
第一題:求和
測(cè)試輸入:1,2
預(yù)期輸出:
3第二題:求平均值
測(cè)試輸入:1,2,3
預(yù)期輸出:
第三題:輸出矩形
測(cè)試輸入:2,3
預(yù)期輸出:
第四題:數(shù)組升序排序
測(cè)試輸入:5,7,12,9,32
預(yù)期輸出:
5 7 9 12 32第五題:打印99乘法表
測(cè)試輸入:無(wú)
預(yù)期輸出:
代碼實(shí)現(xiàn)
package setp17;import java.util.Arrays; import java.util.Scanner;public class HelloWorld {/********** Begin **********//*** 第一題:定義一個(gè)方法 接收兩個(gè)整數(shù)類(lèi)型的參數(shù) a和b,返回兩個(gè)數(shù)的和 返回值類(lèi)型為int 方法名為:getSum*/ public static int getSum(int a ,int b){int sum = a + b;return sum;}/*** 第二題: 定義一個(gè)方法 接收三個(gè)double類(lèi)型參數(shù)a,b,c, 返回這三個(gè)數(shù)的平均值 返回值類(lèi)型為double 方法名為:getAvg*/ public static double getAvg(double a ,double b,double c){double avg = (a + b + c) / 3;return avg;}/*** 第三題: 定義一個(gè)方法 接收兩個(gè)參數(shù) a 和b 打印a行 b列的一個(gè)矩形 不需要返回值 方法名為:printRect*/ public static void printRect(int a , int b){for (int i = 1 ; i <= a ;i++) {for (int k = 1 ; k <= b;k++){System.out.print("*");}System.out.println();}}/*** 第四題:定以一個(gè)方法,接收整形數(shù)組 為參數(shù) 對(duì)這個(gè)數(shù)組進(jìn)行升序排序 最后輸出該數(shù)組 不需要返回值 方法名為 sortArr */ public static void sortArr(int[] arr){for(int i = 0; i< arr.length-1;i++){for(int j = i+1; j< arr.length;j++){if(arr[i] > arr[j]){int tmp = arr[i];arr[i] = arr[j];arr[j] = tmp;}}}for(int i = 0; i< arr.length;i++){System.out.println(arr[i]);}}/*** 第五題* 你只需要實(shí)現(xiàn)for 循環(huán)括號(hào)的內(nèi)容就可 ,打印語(yǔ)句系統(tǒng)已經(jīng)給你完成 */public static void Print99() {for (int i = 1 ; i<=9;i++) {for (int j = 1;j <= i ;j++) {System.out.print(j + " * " + i + " = " + i * j + "\t");}System.out.println();}}/********** End **********/}總結(jié)
- 上一篇: C++初级程序员笔试题总结
- 下一篇: 智慧职教云课堂计算机答案,2020智慧职