Java學習——方法
阿新 • • 發佈:2021-10-13
當編寫程式進行計算時,經常會需要執行一段重複的程式碼,這時可以編寫方法傳入引數進行對方法的呼叫。
方法定義的語法:
public static 資料型別 方法名 (引數型別 引數名){}
方法的作用:
1.提高程式碼的複用性。
2.便於程式的維護。
方法分為四種 : 無參無返回值、無參有返回值、有參無返回值、有參有返回值。
1.無參無返回值
示例程式碼如下:
public static void print1(){ System.out.println("今天依舊是開心的一天!"); }
其中 : void 表示返回值為空 即該方法沒有返回值 因為()中沒有資料 所以該方法沒有引數
2.無參有返回值
示例程式碼如下:
public static int print2(){ int a=1; return a; }
方法是否需要定義返回值 取決於方法呼叫之後,方法的結果在呼叫它的程式是否需要使用。
3.有參無返回值
示例程式碼如下:
public static void print3(int n){ n=n/2; System.out.println(n); }
4.有參有返回值
示例程式碼如下:
public static int sum(int n){ int sum=0; for(int i=1;i<n;i++){ sum+=i; } //return 返回方法計算的值 可以結束方法的程序 return sum; }
二、遞迴
遞迴是一種迭代運算,其實現方式是呼叫方法時在方法內部繼續呼叫該方法直至條件滿足,呼叫才結束。
示例程式碼如下:
//求和的遞迴 public static int sum(int n){ if(n>1){ return n+sum(n-1); }else { return n; } }
遞迴的缺點:
1.記憶體消耗較大。
2.效率較低。
3.可能造成方法棧大溢位。
三、方法的應用例項—雙色球
示例程式碼如下:
package com.hnnlg1; import java.util.Random; import java.util.Scanner; public class test { public static void main(String[] args) { Random random = new Random(); //選手 6+1 6個紅球 1個籃球 //中獎號碼 6+1 6個紅球 1個籃球 int [] redBalls =new int[33]; //紅球陣列 1~33 紅球 int [] userRedBalls = new int[6]; //使用者的紅球和中獎的紅球 int [] luckyRedBalls= new int[6]; int userBlueBall =0; //使用者籃球、中獎的籃球 int luckyBlueBall =0; //確定中獎的紅球和藍球 init(redBalls); //初始化紅球陣列 selectRedBall(redBalls,luckyRedBalls); //選6個紅球作為中獎的紅球號碼 System.out.println("紅球的中獎號碼為:"); //列印輸出中獎的紅球號碼 for(int i=0;i<6;i++) System.out.print(luckyRedBalls[i]+"\t"); luckyBlueBall = random.nextInt(6)+1; //選藍球作為中獎的籃球號碼 System.out.println("\n藍球的中獎號碼為:"+luckyBlueBall+"\n"); //列印輸出中獎的藍球號碼 //判斷使用者選擇的方式 機選 手選 Scanner scanner = new Scanner(System.in); System.out.println("請輸入遊戲方式:1.機選 2.手選"); int type = scanner.nextInt(); scanner.nextLine(); if(type==1){ //機選 selectRedBall(redBalls,userRedBalls); //選6個紅球作為使用者的紅球號碼 System.out.print("使用者的紅球號碼為: "); //列印輸出使用者的紅球號碼 for(int i=0;i<6;i++) System.out.print(userRedBalls[i]+"\t"); userBlueBall=random.nextInt(6)+1; //選1個籃球作為使用者的藍球號碼 System.out.println("\n使用者的藍球號碼為: "+userBlueBall); //列印輸出使用者的藍球號碼 }else if(type==2){ //手選 System.out.println("請輸入你所選的紅球號碼 (注意不要重複選):"); //紀錄使用者所選的紅球號碼 for(int i=0;i<6;i++) { System.out.println("第"+(i+1)+"個紅球號碼:"); userRedBalls[i]=scanner.nextInt(); scanner.nextLine(); } System.out.print("使用者的紅球號碼為: "); //列印輸出使用者的紅球號碼 for(int i=0;i<6;i++) System.out.print(userRedBalls[i]+"\t"); System.out.println("\n請輸入你所選的藍球號碼:");//紀錄使用者所選的藍球號碼 userBlueBall = scanner.nextInt(); System.out.println("\n使用者的藍球號碼為: "+userBlueBall); //列印輸出使用者的藍球號碼 }else { System.out.println("未知指令,請重新輸入!"); } //開獎 int sums=0; //記錄中獎的紅球的個數 int flag=0; //記錄中獎的藍球的個數 for (int i= 0;i<userRedBalls.length;i++){ for (int j =0;j<luckyRedBalls.length;j++) { if(userRedBalls[i]==luckyRedBalls[j]){ //使用者的紅球和中獎的紅球一致時,中獎的紅球的個數加一 sums++; } } } if(userBlueBall==luckyBlueBall) flag++; System.out.println("\n中獎的紅球個數為:"+sums); System.out.println("中獎的藍球個數為:"+flag); } public static void init(int[] arry){ //球的初始化 for (int i=0;i<arry.length;i++){ arry[i]=i+1; } } //從33個紅球中隨機選6個不重複的紅球號碼 public static void selectRedBall(int [] redBalls,int []luckyRedBalls){ int temp; Random random = new Random(); //產生的隨機數作為紅球陣列的下標[0,32] for(int i=0;i<6;i++){ int index = random.nextInt(redBalls.length-i); luckyRedBalls[i]=redBalls[index]; //選中的球和最後一個球進行交換 temp=redBalls[redBalls.length-1-i]; redBalls[redBalls.length-1-i]=redBalls[index]; redBalls[index]=temp; } } }