# 大數據學習筆記第5天-函數 #
## 回顧
## 大綱
- 方法的定義
- 方法的特點
- 方法的應用
- 方法的重載
## 方法的定義
什么是方法?
- 方法就是定義在類中的,具有特定功能的一段小程序;
- 方法也稱為函數;
- 方法可以接收輸入,根據需要輸出內容;
方法定義的格式:
修飾符 返回值類型 方法名(參數類型 形參1, 參數類型 形參2, ...){
方法體語句;
return [返回值];
}
修飾符:暫時固定寫成public static
返回值類型:方法執行后返回結果的數據類型
形式參數列表:
參數類型:是形式參數的數據類型;
形式參數:是一個變量,用于接收方法被調用時傳給方法的實際參數的值
實際參數:放大調用時傳遞給形式參數的具體數值
return:關鍵字,用于表示方法結束
返回值:該方法運算后需要返回給調用者的結果,其類型要和返回值類型匹配,或者可以自動轉型
## 方法的特點:
- 定義方法可以將功能代碼進行封裝;
- 提高了代碼的復用性;
- 方法只有被調用才會被執行;
- 注意:方法之間是調用關系,不可以在方法內部再定義方法;
## 方法練習:
1. 定義方法,用于計算兩個double整型的和;
2. 定義方法,用于打印九九乘法表;
3. 定義方法,用于打印任何行數和列數的“+”號;
4. 定義方法,用于判斷一個int數是否是偶數;
5. 定義方法,接收一個int值,返回該值對應的應該是星期幾,要求switch結構實現;
6. 定義方法,獲取兩個數中的最大值;
7. 定義方法,獲取三個數中的最大值;
### 答案
題1:
/*
定義方法,用于計算兩個double整型的和;
*/
public class Demo01{
public static void main(String[] args){
System.out.println(add(1.0,2.0)); //3.0
}
public static double add(double d1, double d2){
return d1+d2;
}
}
題2:
/*
定義方法,用于打印九九乘法表;
*/
public class Demo02{
public static void main(String[] args){
chenfabiao();
}
public static void chenfabiao(){
for(int i=1; i<=9; i++){
for(int j=1; j<=i; j++){
System.out.print(i+"*"+j+"="+(i * j)+"\t");
}
System.out.println();
}
}
}
打印效果如圖:

題3:
import java.util.Scanner;
/*
定義方法,用于打印任何行數和列數的“+”號;
*/
public class Demo03{
public static void main(String[] args){
Scanner s = new Scanner(System.in);
System.out.println("請輸入行數:");
int line = s.nextInt();
System.out.println("請輸入列數:");
int col = s.nextInt();
print_plus(line,col);
}
public static void print_plus(int line, int col){
for(int i=1; i<=line; i++){
for(int j=1; j<=col; j++){
System.out.print("+");
}
System.out.println();
}
}
}
打印效果如圖:

題4:
import java.util.Scanner;
/*
定義方法,用于判斷一個int數是否是偶數;
*/
public class Demo04{
public static void main(String[] args){
Scanner s = new Scanner(System.in);
System.out.println("請輸入一個int整數:");
int num = s.nextInt();
if(is_even(num)){
System.out.println("這是一個偶數");
}else{
System.out.println("這是一個奇數");
}
}
public static boolean is_even(int num){
if(num % 2 == 0){
return true;
} else {
return false;
}
}
}
打印效果如圖:

題5:
import java.util.Scanner;
/*
定義方法,接收一個int值,返回該值對應的應該是星期幾,要求switch結構實現;
*/
public class Demo05{
public static void main(String[] args){
Scanner s = new Scanner(System.in);
System.out.println("請輸入一個1-7范圍內的整數:");
int num = s.nextInt();
System.out.print("這表示:" + week_day(num));
}
public static String week_day(int num){
String s="";
switch(num){
case 1:
s = "星期一";
break;
case 2:
s = "星期二";
break;
case 3:
s = "星期三";
break;
case 4:
s = "星期四";
break;
case 5:
s = "星期五";
break;
case 6:
s = "星期六";
break;
case 7:
s = "星期日";
break;
default:
s = "非法值";
}
return s;
}
}
打印效果如圖:

題6:
import java.util.Scanner;
/*
定義方法,獲取兩個數中的最大值;
*/
public class Demo06{
public static void main(String[] args){
Scanner s = new Scanner(System.in);
System.out.println("請輸入第一個整數:");
int num1 = s.nextInt();
System.out.println("請輸入第二個整數:");
int num2 = s.nextInt();
System.out.println("比較大的整數是:" + max(num1, num2));
}
public static int max(int num1, int num2){
if(num1 >= num2){
return num1;
}else{
return num2;
}
}
}
打印效果如圖:

題7:
import java.util.Scanner;
/*
定義方法,獲取三個數中的最大值;
*/
public class Demo07{
public static void main(String[] args){
Scanner s = new Scanner(System.in);
System.out.println("請輸入第一個小數:");
Double num1 = s.nextDouble();
System.out.println("請輸入第二個小數:");
Double num2 = s.nextDouble();
System.out.println("請輸入第三個小數:");
Double num3 = s.nextDouble();
System.out.println("三個數中最大的整數是:" + max(num1, num2, num3));
}
public static double max(double d1, double d2, double d3){
if(d1 > d2){
if(d1 > d3){
return d1;
}else{
return d3;
}
}else{
if(d2 > d3){
return d2;
}else{
return d3;
}
}
}
}
打印效果如圖:

## 方法的重載
在同一個類中,允許出現同名,但是形參列表不同的多個方法,稱為方法的重載。
為什么有方法的重載?
為了重復使用方法名,簡化編程,方便閱讀。
程序如何辨別到底調用的是哪個方法?
重載方法雖然方法名相同,但是參數列表不同,虛擬機就是根據調用方法時,傳遞不同的參數來決定到底調用的是哪一個方法。
## 重載示例與練習
...