任務4 批量學生成績處理_第1頁
任務4 批量學生成績處理_第2頁
任務4 批量學生成績處理_第3頁
任務4 批量學生成績處理_第4頁
任務4 批量學生成績處理_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

J

程序設計任務4:批量學生成績處理1任務描述目錄2技術準備3任務實施1、任務描述本任務主要完成學生信息管理系統(tǒng)中成績管理子模塊的各項功能,統(tǒng)計課程的最高分、最低分、平均分和不及格人數(shù)。本任務需要對所有學生的成績進行處理,涉及批量數(shù)據(jù)的操作。要完成本任務需要了解和掌握Java中數(shù)組和方法的使用。2.1數(shù)組的定義與初始化技術準備2.2數(shù)組的常用操作2.3二維數(shù)組2.4命令行參數(shù)數(shù)組2.5方法的定義與調(diào)用2.6方法重載2.7不定長參數(shù)2.8參數(shù)傳遞2.9變量作用域2.1數(shù)組的定義與初始化1.數(shù)組的定義數(shù)組的定義格式如下所示。數(shù)組類型[]數(shù)組名=new數(shù)組類型[數(shù)組長度];功能:聲明一個數(shù)組,并為其分配相應的存儲空間。說明:(1)數(shù)組類型即數(shù)組中要存放的數(shù)據(jù)的類型,既可以是基本數(shù)據(jù)類型,也可以是引用數(shù)據(jù)類型。(2)數(shù)組類型后面跟的[]表示要聲明的是一個一維數(shù)組。(3)數(shù)組長度表示數(shù)組中可存放的數(shù)據(jù)元素的個數(shù),要求必須是常量,不允許是變量。(4)數(shù)組名為自定義,只要符合標識符命名規(guī)則即可。2.1數(shù)組的定義與初始化例:定義一個長度為3的整型數(shù)組score。int[]score=newint[3];上述代碼在聲明數(shù)組的同時就為其分配了相應的存儲空間,使用方式簡潔。數(shù)組的聲明與存儲空間的分配也可分開進行,上述數(shù)組的定義也可采用如下形式。int[]score;//聲明一個用于存放整型數(shù)據(jù)的數(shù)組scorescore=newint[3];//為score數(shù)組分配存儲空間(也稱創(chuàng)建數(shù)組)2.1數(shù)組的定義與初始化數(shù)組是一種引用數(shù)據(jù)類型。數(shù)組元素和數(shù)組名在內(nèi)存里是分開存放的。Java把內(nèi)存分成兩種,一種叫做棧內(nèi)存,一種叫做堆內(nèi)存。棧內(nèi)存用于存放一些基本類型的變量和引用類型的變量(如數(shù)組名或?qū)ο竺?。堆?nèi)存用于存放由new創(chuàng)建的數(shù)組或?qū)ο蟆?.1數(shù)組的定義與初始化2.數(shù)組的初始化數(shù)組的初始化分為動態(tài)初始化和靜態(tài)初始化。動態(tài)初始化是指定義數(shù)組時沒有為數(shù)組元素賦初始值,這時系統(tǒng)會自動為數(shù)組中的元素賦初始值。Java中不同數(shù)據(jù)類型元素的默認初始值如下表所示。數(shù)據(jù)類型默認初始值byte、short、int、long0float、double0.0char一個空字符,即’\u0000’booleanfalse引用數(shù)據(jù)類型null,表示變量不引用任何對象2.1數(shù)組的定義與初始化靜態(tài)初始化是指在定義數(shù)組的同時就為數(shù)組元素指定相應的初始值。格式:數(shù)組類型[]數(shù)組名=new數(shù)組類型[]{初值0,初值1,...,初值n};功能:定義數(shù)組的同時為數(shù)組指定初始值。提示:數(shù)組靜態(tài)初始化時數(shù)組長度必須省略,系統(tǒng)會自動根據(jù)給出的初值個數(shù)決定數(shù)組的長度。如果給出數(shù)組長度,編譯時反而會出錯。2.1數(shù)組的定義與初始化例:定義一個長度為4的整型數(shù)組,并給出相應的初始值。int[]score=newint[]{50,60,90,80};數(shù)組靜態(tài)初始化也可將數(shù)組聲明和數(shù)組的創(chuàng)建分開寫,即上述代碼也可采用如下形式表示。int[]score;score=newint[]{50,60,90,80};數(shù)組的靜態(tài)初始化還可以采用如下更簡潔的方式。int[]score={50,60,90,80};采用此種方式時,數(shù)組的聲明和創(chuàng)建不能分開寫,即寫成如下形式是錯誤的。int[]score;score={50,60,90,80};2.2數(shù)組的常用操作1.數(shù)組元素的訪問對數(shù)組中元素可通過數(shù)組名[下標]的方式來訪問,數(shù)組元素下標從0開始。例:score[0],score[2]2.數(shù)組長度屬性

每個數(shù)組都有一個length屬性,通過該屬性可獲取到數(shù)組的長度。

例:score.length3.數(shù)組的遍歷

操作數(shù)組時,經(jīng)常需要依次訪問數(shù)組中的每個元素,這種操作稱為數(shù)組的遍歷。2.2數(shù)組的常用操作【例

4?1】定義一個包含5個學生成績的數(shù)組,然后分別順序、逆序輸出數(shù)組中所有元素。2.2數(shù)組的常用操作foreach循環(huán)格式:for(類型名變量:數(shù)組名){

循環(huán)體}功能:對數(shù)組中的每個元素依次執(zhí)行一遍循環(huán)體。說明:類型名為數(shù)組元素的類型,循環(huán)時系統(tǒng)自動依次將每個數(shù)組元素賦值給變量,然后執(zhí)行一遍循環(huán)體。2.2數(shù)組的常用操作【例4?2】利用foreach循環(huán)遍歷數(shù)組2.2數(shù)組的常用操作4.數(shù)組最值找一組數(shù)中的最大值或最小值也是數(shù)組的常用操作之一。找最值通常采用“打擂臺法”來實現(xiàn)。以找最大值為例:首先假設第一個元素為當前的最大值(即擂主),用一個變量記錄其下標然后數(shù)組中第二個元素到最后一個元素依次與當前最大值進行比較(打擂),誰大就記錄下誰的下標(即當前新擂主)當所有元素都比較完,變量中記錄的下標就是最大值所在的下標(最終擂主)。2.2數(shù)組的常用操作【例4?3】已知一組學生成績,求其最高分。2.2數(shù)組的常用操作5.排序排序也是數(shù)組的常見操作,排序方法也有很多,如選擇排序、冒泡排序等。假設數(shù)組score中存放了n個學生成績,要求按成績從高到低進行排序。采用選擇排序法進行降序排序的過程如下:(1)從n個成績中找出最高者與score[0]交換。(2)從剩余的n-1個成績中找出最高者與score[1]交換。......(n-1)從剩余的2個成績中找出最高者與score[n-2]交換。選擇排序?qū)嶋H上就是每次從當前的一組數(shù)中找最值與指定位置上的元素進行交換。n個元素共需要找n-1次最值。2.2數(shù)組的常用操作【例4?4】已知一組學生的成績,將其從高到低進行排序。2.3二維數(shù)組二維數(shù)組可以看作是一個特殊的一維數(shù)組,即數(shù)組中的每個元素本身又是一個數(shù)組??梢园讯S數(shù)組的邏輯結構比作成二維表格。表格由若干行、若干列構成,每一行中包含的列數(shù)可以相同,也可以不相同。2.3二維數(shù)組1.二維數(shù)組定義方式1:同時指定二維數(shù)組的長度和每個數(shù)組的元素個數(shù),例:int[][]score=newint[3][4];說明:上面代碼實際上是定義了3個int[]類型的一維數(shù)組,每個一維數(shù)組中的元素又是一個長度為4的一維數(shù)組。相當于一個行數(shù)為3、列數(shù)為4的二維表格,其邏輯結構如下所示。2.3二維數(shù)組方式2:只指定二維數(shù)組的長度,不指定每個數(shù)組的元素個數(shù),例:int[][]score=newint[3][];說明:上述代碼只指定了二維數(shù)組的長度,相當于只指定了二維表格的行數(shù),沒指定每行的列數(shù),可通過下面代碼指定每行中包含的列數(shù)(實際上就是為每個一維數(shù)組分配相應的存儲空間)。score[0]=newint[1];score[1]=newint[2];score[2]=newint[3];其邏輯結構如圖所示。2.3二維數(shù)組2.二維數(shù)組的靜態(tài)初始化二維數(shù)組的初始化同樣也分為動態(tài)初始化和靜態(tài)初始化。定義時沒有指定初始值的系統(tǒng)會自動為其賦默認初始值。二維數(shù)組靜態(tài)初始化方法與一維數(shù)組靜態(tài)初始化類似,將要初始化的數(shù)據(jù)放在大括號內(nèi),每行數(shù)據(jù)單獨用一個大括號包裹,每個大括號中的數(shù)據(jù)個數(shù)可以相同,也可以不相同(即每行中包含的列數(shù)可以相同,也可以不同),例:int[][]score=newint[][]{{1,2},{3,4,5,6},{7,8,9}}同樣,上述代碼也可簡寫成如下形式:int[][]score={{1,2},{3,4,5,6},{7,8,9}}2.3二維數(shù)組3.二維數(shù)組元素的訪問二維數(shù)組元素的訪問通過數(shù)組名[下標1][下標2]的方式實現(xiàn),每個下標都是從0開始的。下標1相當于行下標,下標2相當于列下標。例:score[0][1]4.二維數(shù)組的遍歷二維數(shù)組元素的遍歷需要借助于雙重循環(huán),外循環(huán)用于控制行數(shù),內(nèi)循環(huán)用于控制列數(shù)。二維數(shù)組也有l(wèi)ength屬性,用于獲取數(shù)組長度。2.3二維數(shù)組【例4?5】二維數(shù)組的遍歷2.3二維數(shù)組二維數(shù)組的遍歷也可采用foreach形式遍歷:2.3二維數(shù)組5.二維數(shù)組應用示例【例4?6】已知學生選修課程數(shù)學、英語、語文的成績(每門課程選修人數(shù)不同),求各門課程平均分。2.4命令行參數(shù)數(shù)組main()方法中的參數(shù)String[]args,稱為命令行參數(shù)數(shù)組,此數(shù)組用于接收以命令方式運行程序時在命令行傳遞的參數(shù)。【例4?7】命令行參數(shù)數(shù)組應用示例2.5方法的定義與調(diào)用在編寫程序時,可能會碰到一段相同代碼需要重復使用多次的情況,如在數(shù)組排序時數(shù)組的遍歷輸出就用了兩次,這時就可以把這些需要重復使用的代碼定義成一個方法,以后需要用到此段代碼的時候只需要調(diào)用該方法就可以。使用方法可提高代碼的重用性,從而也可提高代碼的可維護性。Java中的方法就類似于C語言中的函數(shù)。通常情況下,在結構化編程里面將單獨定義的一段可重復調(diào)用的代碼稱為函數(shù),在面向?qū)ο缶幊汤锩鎰t稱之為方法。2.5方法的定義與調(diào)用1.方法的定義

publicstatic返回值類型方法名([形參表]){

方法體;}說明:(1)方法可以有返回值,也可以沒有返回值。如果有返回值,則在方法體中用“return表達式”語句返回相應的結果。表達式值的類型即返回值的類型。如果沒有返回值,則返回值類型應設為void。(2)形參可以有0個或多個。每個形參都需要用類似“類型參數(shù)名”的形式進行聲明,即使多個形參的類型相同,也不能共用一個類型,如(inta,b)這樣的參數(shù)聲明是不合法的,正確的聲明方式應是:(inta,intb)。(3)形參需要用括號包裹,即使沒有形參,方法名后的括號也不能省略。(4)public表示這個方法的訪問權限是公共的,static表示這個方法是靜態(tài)方法。(5)方法名命名規(guī)則:第一個單詞首字母小寫,后面單詞首字母大寫,如printMenu。2.5方法的定義與調(diào)用2.方法的調(diào)用方法定義好后,就可以在其它方法中使用這一方法,稱為方法的調(diào)用。格式:方法名([實參表])說明:如果方法定義時沒有形參,則調(diào)用時也不必給出實參。2.5方法的定義與調(diào)用【例4?8】定義一個求階乘的方法,然后利用該方法求5的階乘。2.5方法的定義與調(diào)用【例4?9】定義一個輸出社會主義核心價值觀內(nèi)容的方法,然后在main()方法中調(diào)用。2.6方法的重載引例:設有如下應用場景,要在程序中實現(xiàn)一個對數(shù)字求和的方法,數(shù)字可能是整數(shù),也可能是小數(shù),參與運算的數(shù)可能是2個,也可能是3個。此時我們可能需要定義4個不同方法來實現(xiàn),定義一個對2個整數(shù)求和的方法,定義一個對3個整數(shù)求和的方法,定義一個對2個小數(shù)求和的方法,定義一個對3個小數(shù)求和的方法。2.6方法的重載上述代碼缺點:程序中用到的方法名比較多,不便于使用。解決辦法:方法重載。Java允許在一個類中定義多個名稱相同,但是參數(shù)個數(shù)或類型不同的方法,這就是方法的重載(方法重載實際上就是指一個類中有多個同名方法)。在調(diào)用時系統(tǒng)會自動根據(jù)傳遞的參數(shù)個數(shù)或參數(shù)類型來決定調(diào)用哪個同名方法。方法的重載必須要滿足兩個條件:一是方法名相同,二是參數(shù)個數(shù)或參數(shù)類型不同。與返回值類型無關。2.7不定長參數(shù)在求幾個數(shù)相加時,可能是兩個數(shù),也可能是三個數(shù),或者是四個、五個,即參數(shù)個數(shù)不確定。如果按照前述方法得需要分別定義不同參數(shù)個數(shù)的add()方法,盡管名稱都相同,可是add()方法還是需要定義多個,仍然不夠靈活,這時可采用可變長度參數(shù)(也叫不定長參數(shù))。在定義方法時,在形參類型后(或者在形參名前)增加三個點(...),表示該形參可以接收多個參數(shù)值,接收進來的多個參數(shù)值被當成數(shù)組傳入。不定長參數(shù)只能處于形參列表的最后,而且一個方法中最多只能包含一個不定長參數(shù)。調(diào)用一個包含不定長形參的方法時,這個不定長形參既可以接收多個參數(shù),也可以接收一個數(shù)組。2.7不定長參數(shù)【例4?12】求任意多個整數(shù)和任意多個小數(shù)的和。2.8參數(shù)傳遞方法調(diào)用時參數(shù)傳遞方向是單向傳遞,即由實參傳遞給形參。需注意的是形參如果是基本數(shù)據(jù)類型,則在方法體中對形參的修改不會影響到實參。如果形參是引用數(shù)據(jù)類型,則在方法體中對形參的修改可能會影響到實參。2.8參數(shù)傳遞【例4?13】基本數(shù)據(jù)類型做形參。2.8參數(shù)傳遞【例4?14】引用數(shù)據(jù)類型做形參。2.9變量作用域程序中用到的變量并不是在任何位置都可以訪問的,訪問權限取決于這個變量是在哪里定義的。變量起作用的代碼范圍稱為變量的作用域。變量的作用域決定了在哪一部分代碼中可以訪問哪些變量。在方法中,變量的作用域分為塊級和方法級,對應的變量分別稱為塊級變量和局部變量。塊級變量是在代碼塊(代碼塊是指用大括號包裹的一組語句)中定義的變量,其作用域為從定義處到所在的代碼塊結束。局部變量是在方法內(nèi)部定義的變量,其作用域為從定義處到方法結束。在同一作用域內(nèi)不允許有同名變量出現(xiàn),但在不同作用域內(nèi)可以有同名變量,兩者互不影響。2.9變量作用域【例4?15】塊級和方法級變量作用域應用示例。3.1統(tǒng)計課程最高分任務實施3.2統(tǒng)計課程最低分3.3統(tǒng)計課程平均分3.4統(tǒng)計課程不及格人數(shù)3.2學生成績管理子模塊實現(xiàn)3.1統(tǒng)計課程最高分每門課程成績可以用一個一維數(shù)組來存放,3門課程都需要統(tǒng)計課程最高分,可以定義一個求課程最高分的方法,然后通過調(diào)用該方法得到每門課程的最高分。3.2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論