版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第4章數(shù)組《Java程序設(shè)計(jì)案例教程()》學(xué)習(xí)目的掌握一維數(shù)組地定義,初始化及應(yīng)用。(責(zé)任擔(dān)當(dāng))掌握一維數(shù)組元素地查找與移動(dòng)方法。掌握一維數(shù)組常用地?cái)?shù)據(jù)排序方法。(數(shù)據(jù)分析思維)掌握二維數(shù)組地定義,初始化及應(yīng)用。(文化自信)1一維數(shù)組*案例4-1歌手大賽評(píng)分程序*案例4-2射擊選手地選拔2二維數(shù)組*案例4-3楊輝三角形目錄CONTENTS新課導(dǎo)入假設(shè)某班有40名學(xué)生,現(xiàn)在需要統(tǒng)計(jì)該班Java考試成績(jī)地基本情況,如計(jì)算該班地平均分,不及格率等。結(jié)合前面所學(xué)知識(shí),就需要在程序定義40個(gè)變量來(lái)存放每位同學(xué)地成績(jī),這樣做非常不方便。在Java有一種特殊地?cái)?shù)據(jù)類型——數(shù)組,利用它可以非常方便地保存這40名同學(xué)地成績(jī)。數(shù)組是指一組具有相同數(shù)據(jù)類型地?cái)?shù)據(jù)地集合,這些數(shù)據(jù)可以是基本數(shù)據(jù)類型,也可以是對(duì)象(引用型數(shù)據(jù))。數(shù)組存放地每個(gè)數(shù)據(jù)稱為數(shù)組地一個(gè)元素,這些元素具有先后順序,元素地?cái)?shù)量(個(gè)數(shù))稱為數(shù)組地長(zhǎng)度,數(shù)組地長(zhǎng)度是在數(shù)組創(chuàng)立時(shí)就固定了地,以后不能更改。數(shù)組按存放元素地復(fù)雜程度可分為一維數(shù)組,二維數(shù)組,多維數(shù)組。習(xí)慣上將維數(shù)大于2地?cái)?shù)組統(tǒng)稱為多維數(shù)組。新課導(dǎo)入4.1.1一維數(shù)組地定義一維數(shù)組4.1.2一維數(shù)組地初始化4.1.3一維數(shù)組元素地訪問4.1一維數(shù)組4.1.4一維數(shù)組地應(yīng)用4.1.5一維數(shù)組元素地移動(dòng)4.1.6一維數(shù)組地元素地排序4.1.1一維數(shù)組地定義一維數(shù)組可以直觀地認(rèn)為是排列成一行或一列地?cái)?shù)據(jù)列表。要想使用數(shù)組,就需要先對(duì)數(shù)組進(jìn)行定義,定義數(shù)組分為聲明與創(chuàng)建兩步。1.一維數(shù)組地聲明一維數(shù)組聲明地語(yǔ)法格式如下: 數(shù)據(jù)類型數(shù)組名[];或數(shù)據(jù)類型[]數(shù)組名;說(shuō)明:數(shù)組元素地?cái)?shù)據(jù)類型可以是Java地任何一種類型。例如:intx[];4.1.1一維數(shù)組地定義2.一維數(shù)組地創(chuàng)建在為數(shù)組分配內(nèi)存空間時(shí),使用關(guān)鍵字new,同時(shí)指明數(shù)組地長(zhǎng)度。為數(shù)組分配內(nèi)存空間地格式如下:數(shù)組名=new數(shù)據(jù)類型[元素個(gè)數(shù)];例如,對(duì)上面聲明地一維數(shù)組x分配存儲(chǔ)空間:x=newint[100];也可以把數(shù)組地聲明與創(chuàng)建合二為一:intx[]=newint[100]; 4.1.1一維數(shù)組地定義第1步聲明一維數(shù)組"intx[];"在內(nèi)存分配一塊存儲(chǔ)空間給x。內(nèi)存分布示意圖如圖4-1所示。第2步創(chuàng)建一維數(shù)組"x=newint[100];"則是在內(nèi)存分配了100個(gè)連續(xù)地存儲(chǔ)空間,且把首地址給了x,接下來(lái)就可以使用變量x引用數(shù)組,這時(shí)地內(nèi)存使用狀態(tài)如圖4-2所示。圖4-1聲明數(shù)組x地內(nèi)存示意圖圖4-2創(chuàng)建數(shù)組x地內(nèi)存示意圖4.1.2一維數(shù)組地初始化數(shù)組初始化指地是在定義數(shù)組時(shí)同時(shí)為各元素賦初值。例如:intx[]={3,5,7,9,11};或intx[]=newint[]{3,5,7,9,11};則數(shù)組x地內(nèi)存分布示意圖如圖4-3所示。此時(shí)數(shù)組地長(zhǎng)度由數(shù)據(jù)元素自動(dòng)確定。圖4-3數(shù)組x地內(nèi)存分布示意圖4.1.3一維數(shù)組元素地訪問數(shù)組地每個(gè)元素通過(guò)下標(biāo)來(lái)引用,格式為:數(shù)組名[下標(biāo)值]下標(biāo)值從0開始,最大地下標(biāo)是"數(shù)組長(zhǎng)度-1"。在Java,為了方便獲得數(shù)組地長(zhǎng)度,提供了一個(gè)length屬性,在程序通過(guò)"數(shù)組名.length"來(lái)獲得數(shù)組地長(zhǎng)度,即元素個(gè)數(shù)。借用下標(biāo)可以逐一訪問數(shù)組地全部元素,即對(duì)數(shù)組進(jìn)行遍歷。圖4-3數(shù)組x地內(nèi)存分布示意圖4.1.3一維數(shù)組元素地訪問例4-1數(shù)組x保存著一批整數(shù),請(qǐng)按順序輸出所有地元素。publicclassExample4_1{publicstaticvoidmain(String[]args){intx[]={3,1,5,8,9,11,42,15};for(inti=0;i<x.length;i++)System.out.print(x[i]+"\t");}}例題分析對(duì)于數(shù)組地元素進(jìn)行訪問,可以借用下標(biāo)法實(shí)現(xiàn):x[下標(biāo)],下標(biāo)地變化范圍:0,1,2,…,x.length-1,是非常有規(guī)律地,為此可以借用循環(huán)來(lái)實(shí)現(xiàn)元素訪問。程序?qū)崿F(xiàn)4.1.4一維數(shù)組地應(yīng)用借用一維數(shù)組,可以非常方便地處理具有相同數(shù)據(jù)類型地?cái)?shù)據(jù),對(duì)數(shù)組地元素常規(guī)地操作包括:增,刪,改,查。1.普通查找例4-2在數(shù)組查找給定地值x是否存在,如果存在,請(qǐng)?zhí)崾舅跀?shù)組出現(xiàn)地位置。例題分析在數(shù)組a查找x,就需要對(duì)數(shù)組進(jìn)行遍歷訪問,按照順序查找,將數(shù)組地每一個(gè)元素與x進(jìn)行對(duì)比。如果數(shù)組存在值為x地元素,則其對(duì)應(yīng)地下標(biāo)為:0-a.length-1,為此定義一個(gè)輔助變量index,并賦初值-1,用index來(lái)記錄x出現(xiàn)地位置。publicclassExample4_2{publicstaticvoidmain(String[]args){inta[]={4,2,7,8,1,9,2,8};intx=7;intindex=-1;for(inti=0;i<a.length;i++)if(a[i]==x)index=i;if(index==-1)System.out.println("數(shù)組沒有值為"+x+"地元素");elseSystem.out.println("數(shù)組第"+(index+1)+"個(gè)數(shù)是"+x);}}程序?qū)崿F(xiàn)4.1.4一維數(shù)組地應(yīng)用2.最值問題例4-3輸入10個(gè)整數(shù),查找其地最大值。例題分析批量數(shù)據(jù)地最值查找方法,一般都是假設(shè)第一個(gè)值為最大值,把它存放在一個(gè)第三方地變量max,然后將max與后面地元素逐一比較大小,如果有一個(gè)元素地值比max保存地值大了,則更新max地值,最后max存放地即為數(shù)組地最大值。4.1.4一維數(shù)組地應(yīng)用importjava.util.Scanner;publicclassExample4_3{publicstaticvoidmain(String[]args){inta[]=newint[10];Scannerinput=newScanner(System.in);System.out.println("請(qǐng)輸入10個(gè)整數(shù)");for(inti=0;i<10;i++){a[i]=input.nextInt();}intmax=a[0];for(inti=1;i<a.length;i++)if(max<a[i])max=a[i];System.out.println("最大值為:"+max);}}程序?qū)崿F(xiàn)4.1.4一維數(shù)組地應(yīng)用最值查找問題擴(kuò)展(1)輸入10個(gè)整數(shù),查找其地最大值,并顯示第幾個(gè)是最大值。4.1.4一維數(shù)組地應(yīng)用……//省略代碼,讀入數(shù)據(jù),存入數(shù)組aintmaxi=0;for(inti=1;i<a.length;i++)if(a[maxi]<a[i])maxi=i;System.out.println("第"+(maxi+1)+"個(gè)值最大值,為:"+a[maxi]);最值查找問題擴(kuò)展4.1.4一維數(shù)組地應(yīng)用(2)借用自定義方法實(shí)現(xiàn)查找最大值及其位置。staticintfindMax(inta[]){intj=0;for(inti=1;i<a.length;i++) if(a[j]<a[i]) j=i;returnj;}精益求精,一個(gè)需求多種解決方案!3.在數(shù)學(xué)地應(yīng)用例4-4借用數(shù)組產(chǎn)生斐波那契數(shù)列地前20項(xiàng),并5個(gè)數(shù)一行進(jìn)行顯示。4.1.4一維數(shù)組地應(yīng)用例題分析斐波那契數(shù)列(Fibonaccisequence),又稱為黃金分割數(shù)列,指地是這樣一個(gè)數(shù)列:1,1,2,3,5,8,13,21,34……在數(shù)學(xué)上,斐波那契數(shù)列以遞推地方法定義:F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2)(n≥3,n∈N*)。為此,可以借用一個(gè)長(zhǎng)度為20地?cái)?shù)組f來(lái)產(chǎn)生并保存這20個(gè)數(shù)據(jù)項(xiàng)。其f[0]=1,f[1]=1,下標(biāo)2及以后地?cái)?shù)組元素可以遞推得出:f[i]=f[i-1]+f[i-2]。publicclassExample4_4{publicstaticvoidmain(String[]args){intf[]=newint[20];f[0]=f[1]=1;for(inti=2;i<20;i++)f[i]=f[i-1]+f[i-2];for(inti=0;i<20;i++){if(i%5==0)System.out.println();System.out.printf("%8d",f[i]);}}}程序?qū)崿F(xiàn)4.1.4一維數(shù)組地應(yīng)用數(shù)組在內(nèi)存占用一塊連續(xù)地存儲(chǔ)空間進(jìn)行存放,有時(shí)需要在數(shù)組進(jìn)行數(shù)據(jù)元素地插入與刪除,為此需要將一批數(shù)據(jù)進(jìn)行前移或后移,從而達(dá)到插入與刪除地目地。4.1.5一維數(shù)組元素地移動(dòng)1.?dāng)?shù)據(jù)地刪除例4-5將數(shù)組值為x地元素進(jìn)行刪除,并輸出刪除后地?cái)?shù)組。例題分析假設(shè)某一時(shí)刻數(shù)組存放地?cái)?shù)據(jù)如下圖所示,數(shù)組包含5個(gè)有效數(shù)據(jù)?,F(xiàn)要將值為5地元素刪除,為此需要將后面地兩個(gè)元素往前移動(dòng),覆蓋掉要?jiǎng)h除地元素即可,刪除后地?cái)?shù)組包含4個(gè)有效數(shù)據(jù)。4.1.5一維數(shù)組元素地移動(dòng)32519321993211932199原始數(shù)組元素前移元素前移刪除后數(shù)組元素前移a[j]=a[j+1]5a[3]a[2]a[4]a[3]publicclassExample4_5{publicstaticvoidmain(String[]args){inta[]={3,2,5,1,9};intx=5;intn=5; //n存放數(shù)組地有效數(shù)據(jù)個(gè)數(shù)intindex=-1;for(inti=0;i<n;i++) //在數(shù)組查找值為x地元素if(a[i]==x)index=i;if(index==-1)System.out.println("數(shù)組沒有值為"+x+"地元素,刪除失敗");else{for(intj=index;j<n-1;j++)//將x之后地?cái)?shù)據(jù)前移覆蓋掉xa[j]=a[j+1];n--;System.out.println("已將數(shù)組值為"+x+"地元素刪除");}System.out.println("數(shù)組地?cái)?shù)據(jù):");for(inti=0;i<n;i++)System.out.print(a[i]+"\t");}}程序?qū)崿F(xiàn)4.1.5一維數(shù)組元素地移動(dòng)數(shù)據(jù)刪除地?cái)U(kuò)展思考:測(cè)試刪除數(shù)據(jù)位于數(shù)組地首尾,能否刪除成功?4.1.5一維數(shù)組元素地移動(dòng)養(yǎng)成測(cè)試地習(xí)慣!思考:測(cè)試數(shù)組存在多個(gè)要?jiǎng)h除地,能否刪除成功?如果待刪除地多個(gè)數(shù)據(jù)相鄰該怎么刪除?32559325993255932599原始數(shù)組元素前移元素前移刪除后5//同前面地例題for(inti=0;i<n;i++)//在數(shù)組查找值為x地元素 if(a[i]==x){ index=i; for(intj=index;j<n-1;j++)//將x之后地?cái)?shù)據(jù)前移覆蓋掉x a[j]=a[j+1]; i--; n--; }if(index==-1) System.out.println("數(shù)組沒有值為"+x+"地元素,刪除失敗");else{System.out.println("已將數(shù)組值為"+x+"地元素刪除");}刪除多個(gè)相鄰元素地關(guān)鍵代碼4.1.5一維數(shù)組元素地移動(dòng)2.數(shù)據(jù)地插入例題4-6數(shù)組a存放著一批升序排列地?cái)?shù)據(jù),請(qǐng)將值為x地元素進(jìn)行插入,并保證插入x后數(shù)組地元素仍按升序排列。例題分析假設(shè)數(shù)組a原始數(shù)據(jù)地存放如圖所示,有效數(shù)據(jù)位數(shù)為5。插入值為2地元素,插入后地有效數(shù)據(jù)位數(shù)為6。135790135579135799135779原始數(shù)組元素后移元素后移元素后移數(shù)組元素后移a[j]=a[j]x=2133579元素后移插入x32a[4]a[5]a[4]a[3]a[3]a[2]a[2]a[1]4.1.5一維數(shù)組元素地移動(dòng)publicclassExample4_6{publicstaticvoidmain(String[]args){ inta[]={1,3,5,7,9,0}; intn=5;//數(shù)組a存放地有效數(shù)據(jù)地位數(shù) intx=2; inti; for(i=n-1;i>=0;i--)//從最后一個(gè)有效數(shù)據(jù)位置開始,邊后移邊查找x插入地合適位置 if(a[i]>x) a[i+1]=a[i]; elsebreak; a[i+1]=x;//插入x n++; System.out.println("數(shù)組a地?cái)?shù)據(jù):"); for(i=0;i<n;i++) System.out.print(a[i]+"\t"); }}程序?qū)崿F(xiàn)4.1.5一維數(shù)組元素地移動(dòng)嚴(yán)謹(jǐn)細(xì)致精益求精對(duì)數(shù)組地?cái)?shù)據(jù)除了進(jìn)行基本地増,刪,查,改操作外,有時(shí)還需要對(duì)數(shù)據(jù)進(jìn)行排序。下面來(lái)介紹兩種比較常見地排序:選擇排序與冒泡排序,并介紹使用Java地API——Arrays.sort()進(jìn)行數(shù)據(jù)排序地方法。4.1.6一維數(shù)組元素地排序1.選擇排序選擇排序(SelectionSort)是一種簡(jiǎn)單直觀地排序算法。它地工作原理是:第一次從待排序地?cái)?shù)據(jù)元素選出最?。ɑ蜃畲螅┑匾粋€(gè)元素,存放在序列地起始位置,再?gòu)氖S嗟匚磁判蛟貙ふ业阶钚。ù螅┰?然后放到已排序地序列地末尾。以此類推,直到全部待排序地?cái)?shù)據(jù)元素地個(gè)數(shù)為零。例4-7數(shù)組a存放著一批數(shù)據(jù)(2,8,1,6,7),請(qǐng)采用選擇排序?qū)ζ溥M(jìn)行升序排列。4.1.6一維數(shù)組元素地排序例題分析第1趟排序排序結(jié)果:1,8,2,6,7第2趟排序排序結(jié)果:1,2,8,6,7第3趟排序排序結(jié)果:1,2,6,8,7第4趟排序排序結(jié)果:1,2,6,7,8至此,排序結(jié)束。選擇排序地動(dòng)畫展示publicclassExample4_7{publicstaticvoidmain(String[]args){inta[]={2,8,1,6,7};for(inti=0;i<a.length-1;i++){intp=i;for(intj=i+1;j<a.length;j++)if(a[p]>a[j])p=j;if(p!=i){intt=a[i];a[i]=a[p];a[p]=t;}System.out.print("\n第"+(i+1)+"趟排序結(jié)果:");for(intk=0;k<a.length;k++)System.out.print(a[k]+"");}}程序?qū)崿F(xiàn)4.1.6一維數(shù)組元素地排序2.冒泡排序在冒泡排序地過(guò)程,不斷地比較數(shù)組相鄰兩個(gè)元素地大小,較小者向上浮,較大者往下沉,整個(gè)過(guò)程猶如水氣泡上升地情景。4.1.6一維數(shù)組元素地排序例4-8數(shù)組a存放著一批數(shù)據(jù)(9,7,5,8,4),請(qǐng)采用冒泡排序?qū)ζ溥M(jìn)行升序排列。4.1.6一維數(shù)組元素地排序圖4-10數(shù)組a冒泡排序地第三趟排序過(guò)程圖4-11數(shù)組a冒泡排序地第四趟排序過(guò)程圖4-8數(shù)組a冒泡排序地第一趟排序過(guò)程圖4-9數(shù)組a冒泡排序地第二趟排序過(guò)程4.1.6一維數(shù)組元素地排序冒泡排序地動(dòng)畫展示4.1.6一維數(shù)組元素地排序?qū)?shù)組a地n個(gè)數(shù)據(jù)排序,需要經(jīng)過(guò)n-1趟排序過(guò)程,分析排序地過(guò)程,可以發(fā)現(xiàn)以下規(guī)律。第i趟排序元素比較地次數(shù)15-1=425-2=335-3=245-4=1publicstaticvoidbubbleSort(int[]a){//定義對(duì)數(shù)組冒泡排序地方法intn=a.length;for(inti=1;i<n;i++){for(intj=0;j<n-i;j++){if(a[j]>a[j+1]){ //比較相鄰元素inttemp=a[j];a[j]=a[j+1];a[j+1]=temp;}}System.out.print("第"+i+"輪排序后:");
}}程序?qū)崿F(xiàn)4.1.6一維數(shù)組元素地排序1一維數(shù)組*案例4-1歌手大賽評(píng)分程序*案例4-2射擊選手地選拔2二維數(shù)組*案例4-3楊輝三角形目錄CONTENTS青年歌手參加歌曲大獎(jiǎng)賽有一個(gè)評(píng)委評(píng)分環(huán)節(jié),假設(shè)有10個(gè)評(píng)委打分(滿分100分),去掉一個(gè)最高分,去掉一個(gè)最低分后,剩余8個(gè)評(píng)分地平均分即為該歌手地最后得分,試寫程序求某選手地得分。案例4-1歌手大賽評(píng)分程序案例分析多個(gè)評(píng)委地評(píng)分可以借助一維數(shù)組保存,首先求所有評(píng)分地總分,再減去最高分,最低分,然后除以有效評(píng)分地個(gè)數(shù)即為該歌手地得分。publicclassSongpetition{publicstaticvoidmain(String[]args){doublescore[]=newdouble[10];Scannerinput=newScanner(System.in);doublesum=0;doublemax,min;doublefinalScore;for(inti=0;i<10;i++){System.out.print("請(qǐng)錄入第"+(i+1)+"個(gè)評(píng)委地打分(1~100):");score[i]=input.nextDouble();sum+=score[i];}max=min=score[0];for(inti=1;i<10;i++){if(max<score[i])max=score[i];if(min>score[i])min=score[i];}finalScore=(sum-max-min)/(score.length-2);System.out.println("該選手地最后得分為:"+finalScore);}}程序?qū)崿F(xiàn)案例4-1歌手大賽評(píng)分程序1一維數(shù)組*案例4-1歌手大賽評(píng)分程序*案例4-2射擊選手地選拔2二維數(shù)組*案例4-3楊輝三角形目錄CONTENTS某學(xué)校要從甲,乙兩名優(yōu)秀選手選拔一名參加全市學(xué)生射擊比賽,學(xué)校預(yù)先對(duì)這兩名選手測(cè)試了5次,成績(jī)?nèi)缦拢▎挝?環(huán))。甲選手5次得分:108999乙選手5次得分:1010799請(qǐng)妳根據(jù)5次測(cè)試成績(jī)做出判斷,派哪位選手參賽更好,為什么?案例4-2射擊選手地選拔案例分析判斷哪位選手入選,首先應(yīng)考慮各選手地平均水平,甲,乙兩名選手地5次成績(jī)組成一個(gè)總體,所以評(píng)價(jià)哪名選手地成績(jī)好,可以從總體地平均數(shù)與方差兩個(gè)角度來(lái)衡量。若選手地成績(jī)總體地平均數(shù)較大,則說(shuō)明該名選手成績(jī)好;若甲,乙選手地總體地平均數(shù)相等,則要比較方差。方差是在概率論與統(tǒng)計(jì)方面衡量隨機(jī)變量或一組數(shù)據(jù)離散程度地度量,是一組數(shù)據(jù)所有地?cái)?shù)與該組數(shù)據(jù)平均數(shù)之差地平方地平均值。設(shè)一組數(shù)據(jù)案例4-2射擊選手地選拔x1,x2,x3,…,xn各組數(shù)據(jù)與它們地平均數(shù)差地平方分別是(x1-)2,(x2-)2,…,(xn-)2那么它們地平均數(shù)就是這組數(shù)據(jù)地方差。方差可以衡量這組數(shù)據(jù)地波動(dòng)大小,表示一組數(shù)據(jù)地離散程度,方差越大,則數(shù)據(jù)波動(dòng)越大,方差地算術(shù)平方根為該組數(shù)據(jù)地標(biāo)準(zhǔn)差?!?/先計(jì)算兩位選手得分地平均分x1,x2if(x1>x2)System.out.println("甲選手勝出");elseif(x1<x2)System.out.println("乙選手勝出");else{ //計(jì)算兩位選手得分地方差doubles1=0,s2=0;for(inti=0;i<score1.length;i++)s1+=(score1[i]-x1)*(score1[i]-x1);s1=s1/score1.length; //甲選手得分地方差for(inti=0;i<score2.length;i++)s2+=(score2[i]-x2)*(score2[i]-x2);s2=s2/score2.length; //乙選手得分地方差System.out.println("兩位選手得分地方差分別是:"+s1+","+s2);if(s1<s2) //方差越小,說(shuō)明成績(jī)?cè)椒€(wěn)定System.out.println("甲選手勝出");elseSystem.out.println("乙選手勝出");}程序?qū)崿F(xiàn)案例4-2射擊選手地選拔1一維數(shù)組*案例4-1歌手大賽評(píng)分程序*案例4-2射擊選手地選拔2二維數(shù)組*案例4-3楊輝三角形目錄CONTENTS4.2.1二維數(shù)組地定義二維數(shù)組4.2二維數(shù)組4.2.3二維數(shù)組地初始化4.2.3二維數(shù)組地應(yīng)用多維數(shù)組元素有多個(gè)下標(biāo),以標(biāo)識(shí)它在數(shù)組地位置,二維數(shù)組可以看成是以一維數(shù)組為元素地?cái)?shù)組。4.2.1二維數(shù)組地定義二維數(shù)組地定義與一維數(shù)組地定義相似,分為數(shù)組地聲明與創(chuàng)建兩步。1.二維數(shù)組地聲明二維數(shù)組地聲明有下列幾種方式。數(shù)據(jù)類型數(shù)組名[][];例如:inta[][];數(shù)據(jù)類型[][]數(shù)組名;例如:int[][]a;2.內(nèi)存分配為二維數(shù)組分配內(nèi)存空間地格式如下:數(shù)組名=new數(shù)據(jù)類型[元素個(gè)數(shù)1][元素個(gè)數(shù)2];例如:a=newint[3][4];數(shù)組a在內(nèi)存占用地內(nèi)存分配示意圖如圖4-12所示。另外,定義地二維數(shù)組每一維地大小可不同。例如:inta[][]={{8,1,6},{3,5},{4,7,8,9}};其在內(nèi)存地存儲(chǔ)結(jié)構(gòu)如圖4-13所示。4.2.1二維數(shù)組地定義圖4-12二維數(shù)組a地內(nèi)存分布示意圖或者intb[][]=newint[3][]; //在創(chuàng)建數(shù)組時(shí)僅確定了一維維數(shù)b[0]=newint[3]; //指定第二維地維數(shù)b[1]=newint[4];b[2]=newint[5];4.2.1二維數(shù)組地定義圖4-12二維數(shù)組b地內(nèi)存分布示意圖二維數(shù)組初始化比一維數(shù)組要復(fù)雜些,不過(guò)方式與一維地類似。例如:int[][]s={{8,1,6},{3,5},{4,7,8,9}};4.2.2二維數(shù)組地初始化圖4-12二維數(shù)組a地內(nèi)存分布示意圖二維數(shù)組地元素通過(guò)兩個(gè)下標(biāo)進(jìn)行訪問,分別是行數(shù)組下標(biāo)與列數(shù)組下標(biāo),例如,對(duì)于二維數(shù)組a,可通過(guò)a[i][j]進(jìn)行訪問,其i與j為數(shù)組a地下標(biāo)。二維數(shù)組行數(shù)組地長(zhǎng)度可通過(guò)a.length獲取,列數(shù)組地長(zhǎng)度可通過(guò)a[i].length獲取。二維數(shù)組元素地引用格式如下:數(shù)組名[下標(biāo)1][下標(biāo)2];例如:s[1][2];4.2.3二維數(shù)組地應(yīng)用publicclassExample4_10{publicstaticvoidmain(String[]args){inta[][]={{6,5},{3,5,7,3},{4,2,2}};for(inti=0;i<a.length;i++){for(intj=0;j<a[i].length;j++)System.out.print(a[i][j]+"\t");System.out.println();}}}例4-10某二維數(shù)組a存放著數(shù)據(jù)inta[][]={{6,5},{3,5,7,3},{4,2,2}},請(qǐng)編寫程序?qū)崿F(xiàn)將該二維數(shù)組地?cái)?shù)據(jù)按行輸出顯示。4.2.3二維數(shù)組地應(yīng)用程序?qū)崿F(xiàn)例4-11某年級(jí)4個(gè)班地Java考試成績(jī)?nèi)绫?-2所示,請(qǐng)采用二維數(shù)組保存這些數(shù)據(jù),并求出:(1)全年級(jí)Java地平均分。(2)每個(gè)班地平均分。4.2.3二維數(shù)組地應(yīng)用班級(jí)分?jǐn)?shù)1班996897
2班89958859643班89799958
4班5979856885表4-2某年級(jí)Java考試成績(jī)表培養(yǎng)"大數(shù)據(jù)時(shí)代"數(shù)據(jù)分析能力publicclassExample4_11{publicstaticvoidmain(String[]args){doublescore[][]={{99,68,97},{89,95,88,59,64},{89,79,99,58},{59,79,85,68,85}};doublesum=0;intcount=0;平均分for(inti=0;i<score.length;i++){//全部數(shù)據(jù)地總與/全部元素個(gè)數(shù)即為總for(intj=0;j<score[i].length;j++)sum+=score[i][j];count+=score[i].length;}System.out.println("整個(gè)年級(jí)地Java平均成績(jī)?yōu)?"+sum/count);for(inti=0;i<score.length;i++){ //每一個(gè)班地平均成績(jī)sum=0;
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- Unit 3 Animals Lesson 2(說(shuō)課稿)-2024-2025學(xué)年人教新起點(diǎn)版英語(yǔ)一年級(jí)上冊(cè)
- Unit 1 Back to school Welcome to the unit 說(shuō)課稿-2024-2025學(xué)年高中英語(yǔ)譯林版(2020)必修第一冊(cè)
- 中介投標(biāo)合同范例
- 2023四年級(jí)數(shù)學(xué)上冊(cè) 八 垂線與平行線 角的分類說(shuō)課稿 蘇教版
- 2024-2025學(xué)年高中歷史 專題一 古代中國(guó)的經(jīng)濟(jì)的基本結(jié)構(gòu)與特點(diǎn) 一 古代中國(guó)的農(nóng)業(yè)經(jīng)濟(jì)(2)教學(xué)說(shuō)課稿 人民版必修2001
- 包月機(jī)械合同范本
- 公司過(guò)戶法人合同范本
- 素質(zhì)教育與終身教育體系
- 出售化工工廠合同范例
- 加盟合同范例烤鴨
- 水生野生動(dòng)物保護(hù)與管理
- 115個(gè)低風(fēng)險(xiǎn)組病種目錄
- 系統(tǒng)解剖學(xué)考試重點(diǎn)筆記
- 暖通空調(diào)基礎(chǔ)知識(shí)及識(shí)圖課件
- 重力壩水庫(kù)安全度汛方案
- 防滲墻工程施工用表及填寫要求講義
- 交通信號(hào)控制系統(tǒng)檢驗(yàn)批質(zhì)量驗(yàn)收記錄表
- Bankart損傷的診療進(jìn)展培訓(xùn)課件
- 校園信息化設(shè)備管理檢查表
- 新版抗拔樁裂縫及強(qiáng)度驗(yàn)算計(jì)算表格(自動(dòng)版)
- API SPEC 5DP-2020鉆桿規(guī)范
評(píng)論
0/150
提交評(píng)論