久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

第四講:方法與數(shù)組

 夜貓速讀 2022-05-05 發(fā)布于湖北

一、方法的定義

為什么要有方法

方法(又叫函數(shù))就是代碼功能的一段特定功能的代碼塊,。方法提高程序的復(fù)用性和可讀性,。

比如有了方法,我們可以把重復(fù)使用的一段代碼提煉出來,,然后在每個需要執(zhí)行這段代碼的地方去調(diào)用即可,。

在一個打飛機的游戲中,飛機需要發(fā)射子彈,,那么我們可以把發(fā)射子彈的這段代碼寫成方法,,這樣就可以避免每次重寫相同的代碼。

方法的格式:

語法:

訪問權(quán)限修飾符[?其它的修飾符如static]返回值類型 方法名(參數(shù)類型1?形參1,、參數(shù)類型2 形參2....){//形參列表?

?//方法體

return返回值,;

}

getMenu(); //調(diào)用方法,此時方法才能被運行//public 訪問權(quán)限修飾符//static 靜態(tài)修飾符,,描述的方法可以直接調(diào)用//void 返回值(無返回值)// // getMwn 方法名   定義一個方法,,在沒有調(diào)用時是不會執(zhí)行的public static void getMenu(){System.out.println();}

方法的格式說明:

修飾符:目前就用public stati

返回值類型:就是功能結(jié)果的數(shù)據(jù)類型

方法名:見名知意,首字母小寫,,遵守駝峰命名法,。方便調(diào)用。

二,、方法的形參與實參

參數(shù):

實際參數(shù):就是實際參與運算的

形式參數(shù):就是方法定義上的,,用于接收實際參數(shù)的

參數(shù)類型:就是參數(shù)的數(shù)據(jù)類型

參數(shù)名:就是變量名

方法體語句:就是完成功能的代碼

注意:

1,、若當前方法中不要使用形參,那么形參列表中可以為空

2,、實參和形參的類型要相i互兼容,,且:實參的取值范圍要小于或者等于形參類型的取值范圍。

在調(diào)用方法中,、如果我們定義的方法有參數(shù),,就必須在調(diào)用方法的同時傳入這個值,即給當前方法中的參數(shù)值賦值,,而這傳入的值我們稱為實際參數(shù),,也就是實參。

實參:傳入的參數(shù)值

形參:接收實參傳過來的值

注意:實參名與形參名可以相同,,也可以不同

小結(jié):形參就是一個變量,,實參就是一個值,傳參就是把一個值給一個形參賦值

3,、方法的返回值

return:結(jié)束方法的

返回值:就是功能的結(jié)果,,由return帶給調(diào)用者

注意:

1、若當前方法沒有返回值類型,,即返回值類型是void,,那么當前的方法中可以不寫return

2、return即表示結(jié)束一個方法,,也可以將返回值返回給調(diào)用當前方法的調(diào)用者

3,、return返回值時一次只能返回一個值,不可以返回多個值

4,、一個方法中可以有多個return,但被執(zhí)行的只能有一個,,所以需要判斷

練習(xí):

1、判斷任意給定年份是否是閏年

//調(diào)用方法//杯子=榨汁機(香蕉,,紅蘋果,,雞蛋)   isRunNian(2020);//調(diào)用者   if(bool){???System.out.println("閏年");??}else{??System.out.println("平年");??}??}     public static boolean isRunNian(int year){?????if?(year?%4==0?&&?year%100!=0) || (year %400==0){?????return?true;?????}?else{?????return false;?????}?????}

四、方法的重載

方法(函數(shù))

方法重載:overloading method(在同一個類中,,方法名相同,,參數(shù)列表不同,返回值不能作為重載的條件)

在類中可以創(chuàng)建多個方法,,他們具有相同的名字,,但具有不同的參數(shù)和不同的定義:(返回值不能作為重載的條件)

public?void?method(int?a){....}

public?void?method(char c){....}

五、數(shù)組的定義

數(shù)組:一組能夠處理相同數(shù)據(jù)類型值的變量集合,,當我們有一組相同類型的數(shù)據(jù)需要儲存,,如果此時使用單個變量來儲存,我們將要定義若干個變量名,這樣將會非常繁瑣,,并不利于維護,。

六、數(shù)組的賦值方式

1,、使用默認的初始值來初始化數(shù)組中的每一個元素

? ? ? 語法:數(shù)組元素類型[ ]scores=new int[3];

2,、先聲明,然后再賦值默認的初始值

? ? ? 語法:數(shù)組元素類型[ ]數(shù)組名,;

數(shù)組名=new數(shù)組元素類型[數(shù)組中元素的個數(shù)(數(shù)組的長度)],;

如:int [ ]scores;

scores=new int[3];

3、先聲明,,然后再使用指定的值進行初始化

語法:數(shù)組元素類型[ ]數(shù)組名=new 數(shù)組元素類型?[ ]{元素1,、元素2...};

如:int[ ]scores=new int[ ]{56,、78,、98};

4,、將第三種寫法可以簡化(使用數(shù)組常量值給數(shù)組進行賦值)

語法:數(shù)組元素類型[ ]數(shù)組名={元素1,,元素2....};

如:int [ ]scores={56,78,98};

七,、數(shù)組的遍歷

求數(shù)組的長度:

x.length

通過下標來訪問數(shù)組中的元素,。

下標:從零開始,到數(shù)組長度-1

如:int[ ]scores={89,90};

訪問最后一個元素值:int lastElement=scores[scores.length-1];

遍歷:依次取出數(shù)組中的每一個元素

//數(shù)組的遍歷int?[]?scores?={23,25,63};System.out.println("數(shù)組長度"+scores.length);//遍歷???int?len?=?scores.length;???for(int?i=0;i<len;i++){???int?scores[i];???System.out.println(scores);???}???System.out.println(scores);}}

遍歷方式一:普通的for循環(huán)

語法:for(int i=0;i<數(shù)組長度,;i++){

//i:循環(huán)變量,同樣:也是數(shù)組的下標(取值范圍[?0,數(shù)組長度)]

數(shù)組元素中的類型 變量=數(shù)組名[i];

}

八,、增強for循環(huán)與可變參數(shù)

1.5?以后Java新增forcach循環(huán)可變參數(shù)

遍歷方式二:使用增強for循環(huán)【forcach循環(huán)】

語法:for(數(shù)組中元素的類型 變量:數(shù)組名){

數(shù)組中元素的類型 臨時變量=變量,;

結(jié)合方法的定義,,可以用可變參數(shù)來代替數(shù)組作為參數(shù)

public?static void?print(int...變量名{

//可變參數(shù)再使用時作為數(shù)組使用

}

使用數(shù)組時要注意的問題;

空指針異常(NullPointerException)

public static void print3(int [] x){//java.lang.NullPointerException//當一個變量為null(沒有賦值)時,,我們?nèi)フ{(diào)用了該變量的屬性和方法 System.out.println("數(shù)組長度為":x.length};//測試數(shù)組的異常,數(shù)組下標越界//java.lang.ArrayIndexOutOfBoundsExceptionpublic?static?void?print4(int[]?x){for(int?i=0;i<=x.length;i++){System.out.println(x[i]);}}}

數(shù)組越界異常(ArraylndexOutOfBoundsException)

數(shù)組內(nèi)存結(jié)構(gòu)分析:數(shù)組是引用類型,,會存放在堆內(nèi)存

names(棧內(nèi)存) 運行速度高因為固定

大小固定,、用于存儲局部、臨時變量(基本數(shù)據(jù)類型和引用變量)

"? "(名字)(堆內(nèi)存)運行速度慢,,因為靈活需要計算

大小不不固定:對象

九,、數(shù)組示例

1、猜數(shù)游戲:從鍵盤中任意輸入一個數(shù)據(jù),,判斷數(shù)列中是否包含此數(shù)

? ?import ?java.util.Random;//生成偽隨機數(shù)????????int?[]?nums?=?int?[]5;????????int?len = nums length;????????Random?r=new?random();//創(chuàng)建可以生成隨機數(shù)的工具????????for(int i=0;i<leni++){????????nums[i]=r.nextInt(50);????????}??????Scanner??input?new?Scanner?(Stytem.in);?? System.out.println("請輸入你要猜的數(shù):(60以內(nèi)"),;???int?userNum = input.nextInt();???boolean flag = false;???for?(int?x:nums?){???if(userNun==x){???flag = true;??  ?break;??  ?}??  ?}??  ?if(flag){?????System.out.println("恭喜你,猜對了");?????}else {?????System.out.println("不好意思,你猜錯了");?????}?????}

? ? 2,、打印一個多正三角型

?char[]?cs?=?{'a','b','c','d','f','G'};?int??len=cs length; ?  for(int?i=1;i<=len;i++){    for(int?j=i;j<len;j++);System.out.println("?");}for(int?j=i;j<len;j++);System.out.println(" ");}for?(int?j=1;?j<=i*2-1;j++){System.out.println(cs[i-1]);}System.out.println();

多維數(shù)組示例:Java中沒有真正的多維數(shù)組多維數(shù)組的表示方式是數(shù)組中的元素還是數(shù)組,。

1、一起來參加屌絲程序員大賽,,有3個班級各3名學(xué)員參賽,,記錄每一個學(xué)員的成績,并計算每個班級平均分,。

?int?[]?[]?={{78,98,88},{86,78,85},{87,96,85},{67,78,89}};?int classLen = scores.length;?for(int?i=0;i<classLen;i++}{?int nun=0;?int?count?=?scores[i].length;?for(int?j=0;j<count;j++){?num+scores[i][j];?}?int avg = sum/count;?System.out.println("第"+(i+1)+班級的平均分是:"+avg);?}?}?}

求最大值和最小值:

int?[]?num?{12,3,54,66,79};int max = max(num);System.out.println("數(shù)列中最大的值是:"+max);int?min = min(num);System.out.println("數(shù)列中最小的值是:"+min);}//求數(shù)列中最大的值public?static?int?max?(int?[]?num){?int?max?=?num[0];?int?len?=?num?.length;?for?(int?i=1;i<len;i++){???if(num?[i]>max){???num[i]=num[i]+max;???max=num[i]-max;???num[i]=mun[i]-max;???}???}???return min;}???}???}

十,、冒泡排序

冒泡排序算法

冒泡排序的算法如下:(從后往前)

比較相鄰的元素,如果第一個比第二個大,,就交換它們兩個,。

對比一對相鄰的元素作同樣的工作,從開始一對到結(jié)尾最后一隊,。在這一點,,最后的元素應(yīng)該會是最大的數(shù)。

針對所有的元素重復(fù)以上的步驟,,除了最后一個

持續(xù)每次對越來越少的元素重復(fù)上面的步驟,,直到?jīng)]有任何一對數(shù)字需要比較。

相同元素的前后順序并沒有變化,,所以冒泡排序是一種穩(wěn)定的排序算法

int?[]?nums?=?{12,15,56,36,45};//待排序的數(shù)列//外循環(huán)控制輪for(int?i=0;i<nums.length-1;i++){//比較輪數(shù)等于列數(shù)的長度-1for (int j=0;j<nums.length-1;j++){if(nums[j]=nums[j]+nums[j+1]{nums[i]=nums[j]+nums[j+1];nums?[j+1]=nums[j]-nums[j+1];nums[j]nums[j]-nums[j+1];}}}//輸出結(jié)果for(int?n?:?mans){System.out.println(n);}}

十一,、選擇排序算法

每一趟從待排序的元素中選出最小(或最大)的一個元素,,順序放在已經(jīng)排好序的數(shù)列最后,,直到全部待排序的數(shù)據(jù)元素排完,選擇排序是不穩(wěn)定的排序方法,。

int [] nums = {12,15,56,36,45};//待排序的數(shù)列int?minIndex?=?0;//用于記錄每次比較的最小值下標//控制輪數(shù)for?(int?i?=?0;i<nums.length-1;i++):minIndex?=?i;//每輪假設(shè)一個最小值下標for?(int?j=i+1;j<nums.length;j++){if(nums[minIndex]>nums[j]){ minIndex=j; } } //判斷需要交換的值下標是否為自己?if(minIndex!=i){  ?  nums?[minIndex?]=nums[minIdex]+nums[i];?   nums [i]=nums [minIndex]-nums[i];????nums?[minIndex]=nums[minIndex]-nums[i];????}?   }?   //輸出結(jié)果????for?(int?n:?nums){????System.out.println(n);}}

十二,、選擇排序算法

每一趟從待排序的數(shù)據(jù)元素選出最小(最大)的一個元素,,順序放在已排好序的列數(shù)的最后,,直到全部待排序的元素排完,選擇排序是不穩(wěn)定的排序方法,。

int?[]?nums?=?{12,15,56,36,45,99};//待排序的數(shù)列int minIndex = 0;//用于記錄每次比較最小值的下標//控制輪數(shù) for (int i=0;i<nums.length-1;i++){?minIndex?=?i;//每輪假設(shè)一個最小值下標?for(int?j=i+1;j<nums.length;j++){?if?(muns?[minIndex]>mans[j]{??minIndex?=?j;??}??}??//判斷需要交換的數(shù)下標是否為自己??if(minIndex!=i){??muns [minIndex] = nums[mins[minIndex]+nuns[i];??numx?[i]?=muns?[minIndex]-munx[i];??munx[minIndex]?= numx[minIndex]-muns[i];??}??}??//輸出結(jié)果??for(int m:muns){??System.out.prinyln(n);??}??}

十三,、直接插入排序法

(從后向前找到合適的位置插入)

基本思想:每步將一個待排序的記錄,按其順序碼大小插入到前面已經(jīng)排序的子序列的合適位置(從后向前找到合適位置后)直到全部插入排序完為止

int [] nums = {12,15,56,36,45,99};//待排序的數(shù)列//控制比較的輪數(shù)?for(int?i=1;i<nums.length;i++){?int temp =nums[i];//記錄操作數(shù)?int j=0;?for(j=i-1;j>=0;j--){?if(nums [j]>temp){??nums?[j+1] = muns[j];??}else{??break;??}??}??if(nums?[j+1]!=temp){?  nums=[j+1]=temp;?  }?  }???//輸出結(jié)果???for(int n: nums){?? Systeem.out.printl(n),;???}
}

? ?十四,、二分查找算法

二分查找算法(折半查找):前提是在已經(jīng)排好序的數(shù)組中,通過將待查找的元素與中間索引值對應(yīng)的元素進行比較,,若大于中間索引值對應(yīng)的元素,,去右邊部分查找,,否則,去左邊部分查找,,依次類推,。直到找到為止,找不到返回一個負數(shù),。

//必須保證是數(shù)列有序 int num = {10,20,50.65,88,90}; int inddex = binarySearch(num,88);?System.out.println(index);? }? //二分查找算法??public?static?int?binarySearch(int [] num,int key){??int?start=0;//開始下標??int?end?=?num.length-1;//結(jié)束下標??while?(start<=end){??int?middle=(start+end)/2//>>>>1??if(num[middle]>key){?????end?=?middle-1;??}else?if(num[middle]<ley){??start=?middle?+1;??}else{??return middle;??}??}??return -1;?}?}

?十五,、Arrays類

Arrays工具類:用來操作數(shù)組(比如排序和搜索)的各種方法

常用方法:

使用二分法查找

? ? Arrays.binarySearch(int?[?] arrat,int value);

數(shù)組內(nèi)容轉(zhuǎn)成字符串的形成輸出

? ?Arrays.toString(int[ ] arry);

?數(shù)組排序

??Arrays.sort(int [ ] array);

復(fù)制指定的數(shù)組

? Arrays.copyOf(int [ ] array.int length);

Arrays.copyOf(int [ ] array.int?from,int to);?? ? ? ? ? ? ? ??System.arraycopy(Object?src,int?srcPos,Object,int?destPos,int length);

判斷兩個數(shù)組是否相等

Arrays.equels();

使用指定元素填充數(shù)組

Arrays.fill();

import java.util.Arrays;   int?[]?num?= {45,65,76,87,98,901,}//二分查找?int?index = Arrays.binarySearch(num,98);?System.out.println("找到的下標是:"+index);?//輸出數(shù)組?for(int n:num){?System.out,println(n);?}?//在測試輸出數(shù)據(jù)時,可以使用,,更加方便?System.out.println(Arrays.toString (num));??//排序??int?num2={10,32,11,44,543,22,12};??Array.sort(num2);//快速排序??System.out.println(Arrays.toString(num2));??//數(shù)組的復(fù)制??int [] num2={10,32,11,44,543,22,12};??Arrays.sort(num2);//快速排序??System.out.println(Arrays.toString(num2));??//數(shù)組復(fù)制??int?[]?num3?=?Arrays?copyOf(num2,10);??System.out,println(Arrays.toString(num3));??int [] newNun = new int[num2.length];??System.arraycopy(num2,0,newNun,o,num2.length);??System.out.println(Arrays.toString(newNum));??//小結(jié):數(shù)組復(fù)制??//效率從高到低排序是:System.arraycopy -> Arrays.copyOf->for??//判斷兩個數(shù)組的值是否相等??System.out.println(Arrays.equals(num2,nuwNun));??//填充數(shù)組??Arrays?fill(newNum,0);??System.out.println(Arrays.toString(newNum));??}??}

? 十六,、雙色球模擬綜合案例

1、雙色球彩票玩法

玩法說明:

雙色球投注區(qū)分為紅球號碼區(qū)和藍球號碼區(qū),,紅球號碼范圍為01~33,,藍球號碼區(qū)為01~16。雙色球從每期從33個紅球中開出六個號碼,,從16個藍球中開出一個號碼作為中將號碼,,雙色球玩法既是競猜開獎號碼中的6個紅球號碼和1個藍球號碼,順序不限,。

(1)案例分析:

1,、如何產(chǎn)生藍球和紅球

2、如何接收用戶選號

3,、如何驗證是否中獎

4,、公布本期中獎號碼

(2)實現(xiàn)步驟:

1、整體實現(xiàn)思路

2,、隨機取值不重復(fù)算法(系統(tǒng)和用戶)

3,、判斷是否中獎的邏輯

4、結(jié)果輸出

 import.java.util.Sanner;?import.?java.util.arrays;?import.java.util.Random;  //定義相關(guān)變量  int?[]?userRedBall?=?new?int[6];?//用戶選擇的紅球號碼  int?[] sysRedBall = new int [6];//系統(tǒng)生成的紅球號碼  int?[]?userBlueBall?=?0;//用戶選擇的藍球  int?[]?sysBlueBall?=?0;//系統(tǒng)生成的籃球  int?[]?redCount?=?0;//記錄用戶選擇記錄的紅球數(shù)  int [] blueCount = 0;//記錄用戶選擇的正確藍球數(shù)  int [] redBall = new int[33];??//需要隨機生成六個在1~33之間不重復(fù)的數(shù)(算法)??for?(int?i=0;i<redBall.length;i++){??redBall[i]=i+1;??}??//游戲開始,,系統(tǒng)提示??System.out.println("雙色球游戲開始,,good luck!");??System.out.println("請問您是要機選還是手選號碼(1:機選 2:手選");??????Scanner?input?=?new?Scanner(System.in);????Random?r=new?Random();//生成隨機數(shù)工具????boolean?flag?=?true;//用于判斷是否重新輸入機選或者是手選(意思就是除了1和2之外數(shù)必須是重輸????while?(flag){????int isAuto = input.nextInt();????switch(isAuto){????case 1:????//機選????compterSelection(redBall,userRedBall);//機選紅球????????userRedBall?=?r.nextInt(16)+1;//機選藍球????????flag?=?false;????????break;????case 2;?????//手選?????????System.out.println("請選擇6個紅球號碼(1~33):);??????? for?(int?i=0;?i<userRedBall.length;i++){??????? userRedBall[i] = input.nextInt();??????? }??????????System.out.println("請選擇一個藍球號碼(1~16):");?????????????useblueBall?=?input.nextInt();?????????????flag = false;???????      ??break;???????????????default:??????????????? System.out.println("請問您是要機選還是手選(1機選 2手選);????         break;????}????}????//系統(tǒng)隨機生成的號碼????//紅球???         ?computerSlection(redBall,sysRedBall);???         ?//藍球?????????????sysBlueBall?=?r.nextInt(16)+1;?????????????//統(tǒng)計結(jié)果?????????????//統(tǒng)計紅球????????????? for (int i=0; i<userRedBall.length;i++){??????????????for?(int?j=0;?i<sysRedBall.length-redCount;j++){??????????????if(userRedBall[i]==sysRedBall[j];??????????????sysRedBall[j]=sysRedBall[sysRedBall.length-1-redCount];??????????????????userRedBall[sysRedBall.length-1-redCount]=temp;????????????????????????????????????redCount++;??????????????????break;??????????????????}??????????????????}??????????????????}??????????????????????????????????//統(tǒng)計藍球數(shù)?????????????????? if(userRedBall==sysRedBall){???????????????????blueCount = 1;???????????????????//驗證是否中獎(中獎成功率排在前面)???????????????????if(blueCount?==0?&&?redCount<==3){????????????????????System.out.println("革命尚未成功同志還要努力");????????????????????}else??if(blueCount?==1?&&?redCount<==3){????????????????????System.out.println("中了六等獎5塊錢");??????????????????????}else??if((blueCount?==1?&&?redCount<==3)??||?blueCount==0 && redCount==4)){????????????????????System.out.println("中了五等獎10塊錢");??????????????????????}else??if((blueCount?==1?&&?redCount<==4)??||?blueCount==0?&&?redCount==5)){????????????????????System.out.println("中了四等獎200塊錢");????????????????????}else??if(blueCount?=1?&&?redCount<==5){????????????????????System.out.println("中了三等獎3000塊錢");????????????????????}else??if(blueCount?==0?&&?redCount<==6){????????????????????System.out.println("中了二等獎150W");????????????????????}else??if(blueCount?==1?&&?redCount<==){????????????????????System.out.println("中了一等獎500W");????????????????????}else{????????????????????System.out.println("系統(tǒng)有誤中獎無效");????????????????????}????????????????????//公布系統(tǒng)號碼??????????????????????System.out.println("本期中獎紅號碼為:");??????????????????????sort(sysRedBall);???????????????????????System.out.println(Aaaays.toStrings(ysRedBall));???????????????????????????????System.out.println("本期中獎號碼為:"+ysRedBall);???????????????????????????????//公布用戶號碼????????????????????????????????System.out.println("您選擇的紅號碼為:");??????????????????????sort(userRedBall);???????????????????????System.out.println(Aaaays.toStrings(userRedBall));???????????????????????????????System.out.println("本期中獎號碼為:"+userRedBall);??????????????????????????????????System.out.println("買雙色球造福你我,!謝謝!??!")??????????????????????????????????//冒泡排序????????????????????????public?static?void?sort(int[]?ball){?????????????????????????for?(int?i=0;?i<ball.length;i++){??????????????????????????for?(int?j=0;?i<ball.length-1-i;j++){???????????????????????????if(ball?[j]>ball?[j+1]?{??????????????????????????ball[j]?=ball[j]+ball[j+i];???????????????????????????ball[j]?=ball[j+1]-ball[j+i];????????????????????????????ball[j]?=ball[j]-ball[j+i];????????????????????????????}????????????????????????????}????????????????????????????}????????????????????????????}?//用于在指定數(shù)列中,隨機生成多個不重復(fù)的數(shù)算法?????public?static?void?computerSelection(int[]?redBall,int [] userRedBall  ){?????Random r = new Random();?????int index = -1;??????for?(int?i=0;?i<userRedBall.length;i++){??????index?=?r.nextInt(redBall.length-i;);??????userRedBall[i]?=?redBall[index];??????int?temp?=?redBall[index];??????redBall[index]?=?redBall.length-1-i];??????redBall[redBall.length-1-i] = temp;??????}??????}??????}

?

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多