單元任務一學生成績計算程序設計_第1頁
單元任務一學生成績計算程序設計_第2頁
單元任務一學生成績計算程序設計_第3頁
單元任務一學生成績計算程序設計_第4頁
單元任務一學生成績計算程序設計_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

任務一:學生成績計算程序設計單元三:數(shù)據(jù)與異常處理程序設計教學目標知識目標掌握數(shù)組的聲明和創(chuàng)建掌握Java.util.Arrays類中的方法能力目標能夠遍歷一維數(shù)組能夠使用Java.util.Arrays類對數(shù)組進行操作教學內容4任務陳述123知識準備任務實施任務拓展任務實訓5任務描述:

對學生成績進行統(tǒng)計計算,參加考試的有6名學生,考試成績分別為94.5,89.0,79.5,64.5,81.5,73.5,計算考試的總分數(shù)并保存大于考試平均分的成績信息,將信息存入數(shù)組HighScore中。運行結果如下圖3-1所示:1.任務陳述2.知識準備intstu1=95;intstu2=89;intstu3=79;intstu4=64;intstu5=76;intstu6=88;……avg=(stu1+stu2+stu3+stu4+stu5…+stu30)/3030個變量30個變量太繁瑣1、Java考試結束后,老師給張三分配了一項任務,讓他計算全班(30人)的平均分2.知識準備列表中的內容是否可以按照如右圖所示的方式來存儲呢?可以,這就是數(shù)組!生活案例:購物列表2.知識準備數(shù)組是一個變量,存儲相同數(shù)據(jù)類型的一組數(shù)據(jù)聲明一個變量就是在內存空間劃出一塊合適的空間聲明一個數(shù)組就是在內存空間劃出一串連續(xù)的空間2.知識準備數(shù)組的結構和基本要素標識符:數(shù)組的名稱,用于區(qū)分不同的數(shù)組數(shù)組元素:向數(shù)組中存放的數(shù)據(jù)元素下標:對數(shù)組元素進行編號元素類型:數(shù)組元素的數(shù)據(jù)類型2.知識準備什么是數(shù)組?數(shù)組只有一個名稱,即標識符元素下標標明了元素在數(shù)組中的位置,從0開始數(shù)組中的每個元素都可以通過下標來訪問數(shù)組長度固定不變,避免數(shù)組越界2.知識準備使用數(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;//學生姓名聲明數(shù)組:

告訴計算機數(shù)據(jù)類型是什么1數(shù)據(jù)類型數(shù)組名[];

數(shù)據(jù)類型[]數(shù)組名;

聲明數(shù)組時不規(guī)定數(shù)組長度score=newint[30];avgAge=newint[6];name=newString[30];30……分配空間:

告訴計算機分配幾個連續(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.知識準備【例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.知識準備

數(shù)組遍歷、排序數(shù)組的遍歷:使用循環(huán)語句while或for來獲取數(shù)組中的每一個元素,通過下標來控制訪問哪一個元素。

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ù)組名【行下標】.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.知識準備【例3-2】隨機產(chǎn)生3行3列的二維數(shù)組,并對每個元素賦初值。int[][]number=newint[3][3];System.out.println("隨機產(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.知識準備

【例3-3】實現(xiàn)一個數(shù)組的轉置,操作過程是將二維數(shù)組表示的矩陣對應的每一個元素number[i][j]變成number[j][i]。2.知識準備int[][]number=newint[3][3];System.out.println("隨機產(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.知識準備System.out.println("轉置后");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]+"");}}對角變換,元素坐標,列變行,行變列2.知識準備數(shù)組排序

首先冒泡排序方法的過程是將待排序的數(shù)據(jù)存放在數(shù)組中,自后向前依次兩兩相互比較,如果后者比前者小,則交換之。一直比較到第一個位置,將數(shù)據(jù)序列的第一個最小的數(shù)據(jù)選出放在第一個位置。在剩余的數(shù)列(除第一個位置數(shù)據(jù)外的數(shù)據(jù))中再自后向前按上述方法比較,直到整個數(shù)列有序為止?!纠?-4】簡單的冒泡排序,按關鍵字由小到大排列一組整數(shù)。2.知識準備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.知識準備用java.util.Arrays類操縱數(shù)組

java.util包包含許多常用的包,Arrays類就是其中一個,它提供了數(shù)組的一些常用的方法,如比較、排序、查找等常用的方法。1.方法publicstaticvoidsort(數(shù)值類型[]a)對指定的數(shù)值型數(shù)組按數(shù)字升序進行排序。【例3-5】對無序的10個數(shù)字使用Arrays類的sort方法進行排序。2.知識準備Arrays.sort(sum);System.out.println("*****排序后******");for(inti=0;i<sum.length;i++){System.out.println("sum["+i+"]="+sum[i]);}注意:有序數(shù)組對數(shù)據(jù)的查找效率很高。如果一組有序序列需要頻繁查找而較少更新的話,則建議用數(shù)組結構。比如輸入法中的拼音字庫中字或詞的查找等。2.知識準備2.publicstaticintbinarySearch(數(shù)組,關鍵字)使用二進制搜索算法來搜索指定的數(shù)值型數(shù)組,以獲得指定的值。必須在進行此調用之前對數(shù)組進行排序(通過上面的sort方法)。如果沒有對數(shù)組進行排序,則結果是不明確的。【例3-5】對給定的有序數(shù)字序列,使用Arrays類提供的二分查找來實現(xiàn)給定關鍵字的查找。2.知識準備

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的下標是::"+Arrays.binarySearch(sum1,10));小經(jīng)驗:對于數(shù)組中的數(shù)據(jù)需要頻繁進行插入、刪除操作,建議不要用數(shù)組處理,因為頻繁的移動數(shù)據(jù)元素,所以效率不高。可以使用動態(tài)數(shù)組LinkedList類,它在java.util包中,提供了插入和刪除的方法,并且有較高的效率。3.1解決步驟(1)打開Eclipse中,創(chuàng)建一個類(2)在類的main方法中定義一個含有6個元素的整形數(shù)組(3)給數(shù)組元素進行賦值(4)通過循環(huán)完成數(shù)組元素相加求和(5)輸出總分,測試運行(6)計算平均分avgscore(7)通過getHighScore方法獲得高于平均分的分數(shù)信息(8)最后通過visitAllArray方法打印高于平均分的分數(shù)信息3.任務實施3.任務實施publicstaticvoidmain(String[]args){ System.out.println("計算本組成員的考試總分數(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++){

//篩選高于平均分的學生成績到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ù)組,在本部分我們學習一個使用一維數(shù)組和二維數(shù)組的綜合實例。【例3-7】設計一個學生成績管理系統(tǒng),定義一個一維數(shù)組存儲10個學生名字;定義一個二維數(shù)組存儲這10個學生的6門課(C程序設計、物理、英語、高數(shù)、體育、政治)的成績;程序應具有下列功能:1.按名字查詢某位同學成績?2.查詢某個科目不及格的人數(shù),及學生名單?4.任務拓展String[]name={“a”,“b”,“c”,“d”,“e”,“f”,“g”,“h”,“i”,“l(fā)”};//存儲學生的名字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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論