




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
任務(wù)一:學(xué)生成績計算程序設(shè)計單元三:數(shù)據(jù)與異常處理程序設(shè)計教學(xué)目標(biāo)知識目標(biāo)掌握數(shù)組的聲明和創(chuàng)建掌握J(rèn)ava.util.Arrays類中的方法能力目標(biāo)能夠遍歷一維數(shù)組能夠使用Java.util.Arrays類對數(shù)組進(jìn)行操作教學(xué)內(nèi)容4任務(wù)陳述123知識準(zhǔn)備任務(wù)實(shí)施任務(wù)拓展任務(wù)實(shí)訓(xùn)5任務(wù)描述:
對學(xué)生成績進(jìn)行統(tǒng)計計算,參加考試的有6名學(xué)生,考試成績分別為94.5,89.0,79.5,64.5,81.5,73.5,計算考試的總分?jǐn)?shù)并保存大于考試平均分的成績信息,將信息存入數(shù)組HighScore中。運(yùn)行結(jié)果如下圖3-1所示:1.任務(wù)陳述2.知識準(zhǔn)備intstu1=95;intstu2=89;intstu3=79;intstu4=64;intstu5=76;intstu6=88;……avg=(stu1+stu2+stu3+stu4+stu5…+stu30)/3030個變量30個變量太繁瑣1、Java考試結(jié)束后,老師給張三分配了一項任務(wù),讓他計算全班(30人)的平均分2.知識準(zhǔn)備列表中的內(nèi)容是否可以按照如右圖所示的方式來存儲呢?可以,這就是數(shù)組!生活案例:購物列表2.知識準(zhǔn)備數(shù)組是一個變量,存儲相同數(shù)據(jù)類型的一組數(shù)據(jù)聲明一個變量就是在內(nèi)存空間劃出一塊合適的空間聲明一個數(shù)組就是在內(nèi)存空間劃出一串連續(xù)的空間2.知識準(zhǔn)備數(shù)組的結(jié)構(gòu)和基本要素標(biāo)識符:數(shù)組的名稱,用于區(qū)分不同的數(shù)組數(shù)組元素:向數(shù)組中存放的數(shù)據(jù)元素下標(biāo):對數(shù)組元素進(jìn)行編號元素類型:數(shù)組元素的數(shù)據(jù)類型2.知識準(zhǔn)備什么是數(shù)組?數(shù)組只有一個名稱,即標(biāo)識符元素下標(biāo)標(biāo)明了元素在數(shù)組中的位置,從0開始數(shù)組中的每個元素都可以通過下標(biāo)來訪問數(shù)組長度固定不變,避免數(shù)組越界2.知識準(zhǔn)備使用數(shù)組四步走:1、聲明數(shù)組2、分配空間3、賦值4、處理數(shù)據(jù)int[]a;a=newint[5];a[0]=8;a[0]=a[0]*10;a880a[0]int[]score1;//Java成績intscore2[];//C#成績String[]name;//學(xué)生姓名聲明數(shù)組:
告訴計算機(jī)數(shù)據(jù)類型是什么1數(shù)據(jù)類型數(shù)組名[];
數(shù)據(jù)類型[]數(shù)組名;
聲明數(shù)組時不規(guī)定數(shù)組長度score=newint[30];avgAge=newint[6];name=newString[30];30……分配空間:
告訴計算機(jī)分配幾個連續(xù)的空間2數(shù)據(jù)類型[]數(shù)組名=new
數(shù)據(jù)類型[大小];聲明數(shù)組并分配空間score[0]=89;score[1]=79;score[2]=76;……賦值:向分配的格子里放數(shù)據(jù)……30score[0]score[1]score[2]
89
79
76太麻煩!能不能一起賦值?32.知識準(zhǔn)備【例3-1】聲明并創(chuàng)建存放4個人考試成績的一維數(shù)組并打印之。
floatscore[]=newfloat[4]; score[0]=78.9f; score[1]=80.4f; score[2]=89.0f; score[3]=88.5f; System.out.println(score[0]); ... floatscore2[]={68.9f,60.4f,69.0f,68.5f}; ..... System.out.println(score2[2]);數(shù)組創(chuàng)建及使用簡潔創(chuàng)建數(shù)組2.知識準(zhǔn)備
數(shù)組遍歷、排序數(shù)組的遍歷:使用循環(huán)語句while或for來獲取數(shù)組中的每一個元素,通過下標(biāo)來控制訪問哪一個元素。
floatscore[]=newfloat[4]; score[0]=78.9f; score[1]=80.4f; score[2]=89.0f; score[3]=88.5f; for(inti=0;i<score.length;i++){System.out.println(score[i]);}為了訪問數(shù)組方便。Java提供了一維數(shù)組長度的提取辦法是數(shù)組名.length,返回數(shù)組的長度。二維數(shù)組是使用數(shù)組名【行下標(biāo)】.length來獲得每行的長度的。使用如下嵌套的循環(huán)來完成二維數(shù)組的遍歷的。for(i=0;i<數(shù)組名.length,i++)for(j=0;i<數(shù)組名[i].length,i++){System,out.println(數(shù)組名[i][j]);}2.知識準(zhǔn)備【例3-2】隨機(jī)產(chǎn)生3行3列的二維數(shù)組,并對每個元素賦初值。int[][]number=newint[3][3];System.out.println("隨機(jī)產(chǎn)生3*3的二維數(shù)組");for(inti=0;i<number.length;i++){ for(intj=0;j<number[i].length;j++){ number[i][j]=(int)(Math.random()*100);System.out.print(number[i][j]+"");}System.out.println();}2.知識準(zhǔn)備
【例3-3】實(shí)現(xiàn)一個數(shù)組的轉(zhuǎn)置,操作過程是將二維數(shù)組表示的矩陣對應(yīng)的每一個元素number[i][j]變成number[j][i]。2.知識準(zhǔn)備int[][]number=newint[3][3];System.out.println("隨機(jī)產(chǎn)生3*3的二維數(shù)組");for(inti=0;i<number.length;i++){ for(intj=0;j<number[i].length;j++){ number[i][j]=(int)(Math.random()*100);
System.out.print(number[i][j]+"");} System.out.println();}創(chuàng)建3行3列的二維數(shù)組2.知識準(zhǔn)備System.out.println("轉(zhuǎn)置后");for(inti=0;i<number.length;i++){ for(intj=0;j<number[i].length;j++){
if(i<j){inttemp=number[i][j]; number[i][j]=number[j][i]; number[j][i]=temp;} System.out.print(number[i][j]+"");}}對角變換,元素坐標(biāo),列變行,行變列2.知識準(zhǔn)備數(shù)組排序
首先冒泡排序方法的過程是將待排序的數(shù)據(jù)存放在數(shù)組中,自后向前依次兩兩相互比較,如果后者比前者小,則交換之。一直比較到第一個位置,將數(shù)據(jù)序列的第一個最小的數(shù)據(jù)選出放在第一個位置。在剩余的數(shù)列(除第一個位置數(shù)據(jù)外的數(shù)據(jù))中再自后向前按上述方法比較,直到整個數(shù)列有序為止。【例3-4】簡單的冒泡排序,按關(guān)鍵字由小到大排列一組整數(shù)。2.知識準(zhǔn)備publicstaticvoidbubbleSort(int[]table)//冒泡排序 {System.out.println("冒泡排序");
booleanexchange=true;
for(inti=1;i<table.length&&exchange;i++) {exchange=false;//假定元素未交換
for(intj=0;j<table.length-i;j++) if(table[j]>table[j+1]){ inttemp=table[j]; table[j]=table[j+1]; table[j+1]=temp; exchange=true;} } }一趟冒泡排序2.知識準(zhǔn)備用java.util.Arrays類操縱數(shù)組
java.util包包含許多常用的包,Arrays類就是其中一個,它提供了數(shù)組的一些常用的方法,如比較、排序、查找等常用的方法。1.方法publicstaticvoidsort(數(shù)值類型[]a)對指定的數(shù)值型數(shù)組按數(shù)字升序進(jìn)行排序?!纠?-5】對無序的10個數(shù)字使用Arrays類的sort方法進(jìn)行排序。2.知識準(zhǔn)備Arrays.sort(sum);System.out.println("*****排序后******");for(inti=0;i<sum.length;i++){System.out.println("sum["+i+"]="+sum[i]);}注意:有序數(shù)組對數(shù)據(jù)的查找效率很高。如果一組有序序列需要頻繁查找而較少更新的話,則建議用數(shù)組結(jié)構(gòu)。比如輸入法中的拼音字庫中字或詞的查找等。2.知識準(zhǔn)備2.publicstaticintbinarySearch(數(shù)組,關(guān)鍵字)使用二進(jìn)制搜索算法來搜索指定的數(shù)值型數(shù)組,以獲得指定的值。必須在進(jìn)行此調(diào)用之前對數(shù)組進(jìn)行排序(通過上面的sort方法)。如果沒有對數(shù)組進(jìn)行排序,則結(jié)果是不明確的?!纠?-5】對給定的有序數(shù)字序列,使用Arrays類提供的二分查找來實(shí)現(xiàn)給定關(guān)鍵字的查找。2.知識準(zhǔn)備
int[]sum1={1,4,2,3,6,7,8,11,10,20};
Arrays.sort(sum1); for(inti=0;i<sum1.length;i++){ System.out.print(""+sum1[i]);} System.out.println("key=10的下標(biāo)是::"+Arrays.binarySearch(sum1,10));小經(jīng)驗:對于數(shù)組中的數(shù)據(jù)需要頻繁進(jìn)行插入、刪除操作,建議不要用數(shù)組處理,因為頻繁的移動數(shù)據(jù)元素,所以效率不高??梢允褂脛討B(tài)數(shù)組LinkedList類,它在java.util包中,提供了插入和刪除的方法,并且有較高的效率。3.1解決步驟(1)打開Eclipse中,創(chuàng)建一個類(2)在類的main方法中定義一個含有6個元素的整形數(shù)組(3)給數(shù)組元素進(jìn)行賦值(4)通過循環(huán)完成數(shù)組元素相加求和(5)輸出總分,測試運(yùn)行(6)計算平均分avgscore(7)通過getHighScore方法獲得高于平均分的分?jǐn)?shù)信息(8)最后通過visitAllArray方法打印高于平均分的分?jǐn)?shù)信息3.任務(wù)實(shí)施3.任務(wù)實(shí)施publicstaticvoidmain(String[]args){ System.out.println("計算本組成員的考試總分?jǐn)?shù)");
floata[]={94.5f,89.0f,79.5f,64.5f,81.5f,73.5f};
visitAllArray(a);
floattotalscore=calculate(a);
System.out.print("高于平均分的是:");
visitAllArray(getHighScore(a));
}publicstaticfloatcalculate(floata[]){ floatsum=0.0f;
for(inti=0;i<a.length;i++){ sum+=a[i]; } returnsum; }//計算數(shù)組數(shù)據(jù)數(shù)值的總和publicstaticfloat[]getHighScore(floata[]){ intcount=0; floatavgscore=calculate(a)/a.length;
for(inti=0;i<a.length;i++){ if(a[i]>avgscore){count++;} }//for
floatb[]=newfloat[count];//確定數(shù)組的長度為count的值
count=0;//count初始化為0
for(inti=0;i<a.length;i++){
//篩選高于平均分的學(xué)生成績到b數(shù)組
if(a[i]>avgscore){b[count]=a[i];
count=count+1;}}
returnb; }publicstaticvoidvisitAllArray(floata[]){//遍歷數(shù)組
for(inti=0;i<a.length;i++){ System.out.print(a[i]+""); }//循環(huán)打印數(shù)組
System.out.println(); }//end_visitAllArray在前一部分,解決問題的程序使用的交簡單的一維數(shù)組,在本部分我們學(xué)習(xí)一個使用一維數(shù)組和二維數(shù)組的綜合實(shí)例?!纠?-7】設(shè)計一個學(xué)生成績管理系統(tǒng),定義一個一維數(shù)組存儲10個學(xué)生名字;定義一個二維數(shù)組存儲這10個學(xué)生的6門課(C程序設(shè)計、物理、英語、高數(shù)、體育、政治)的成績;程序應(yīng)具有下列功能:1.按名字查詢某位同學(xué)成績?2.查詢某個科目不及格的人數(shù),及學(xué)生名單?4.任務(wù)拓展String[]name={“a”,“b”,“c”,“d”,“e”,“f”,“g”,“h”,“i”,“l(fā)”};//存儲學(xué)生的名字int[][]grade={{50,60,70,80,90,10},{40,90,80,60,40,70},{60,80,70,60,40,90},{50,60,70,80,90,10},
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年紡織品檢驗員考試解析與展望試題及答案
- 國際美術(shù)設(shè)計師行業(yè)動態(tài)與試題及答案
- 大學(xué)馬原期末試題及答案
- 2024年紡織行業(yè)專業(yè)水平考試試題及答案
- 干部廉潔自律試題及答案
- 當(dāng)前市場下的紡織品設(shè)計師考試試題及答案
- 2024年技術(shù)標(biāo)準(zhǔn)改革對紡織的影響試題及答案
- 商標(biāo)法的試題及答案
- 公務(wù)寫作考試題及答案
- 提升審美能力2024年國際商業(yè)美術(shù)設(shè)計師考試試題及答案
- 改革開放與新時代知到智慧樹章節(jié)測試課后答案2024年秋同濟(jì)大學(xué)
- GB/T 12444-2006金屬材料磨損試驗方法試環(huán)-試塊滑動磨損試驗
- 第五章曲霉病課件
- CRH380B型動車組概述
- 新方法驗證報告水質(zhì)礦化度重量法《水和廢水監(jiān)測分析方法》(第四版增補(bǔ)版)
- 2020新譯林版高一英語必修三unit4單詞默寫
- 紫藤蘿瀑布的說課稿
- GB∕T 37665-2019 古陶瓷化學(xué)組成無損檢測PIXE分析技術(shù)規(guī)范
- 增材制造產(chǎn)業(yè)調(diào)研報告
- 曲阜師范大學(xué)畢業(yè)論文答辯通用ppt模板
- 刮板式花生脫殼機(jī)設(shè)計
評論
0/150
提交評論