版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、java程序設(shè)計實驗指導(dǎo)書武漢科技大學(xué)信息科學(xué)與工程學(xué)院 java程序設(shè)計實驗教學(xué)大綱實驗課程名稱:java程序設(shè)計 英文名稱:the java programming language實驗課程性質(zhì):非獨(dú)立設(shè)課 應(yīng)開實驗學(xué)期:6課程編碼:0402004 實驗學(xué)時數(shù):10適用專業(yè):電子信息工程 一、實驗教學(xué)目的和要求java程序設(shè)計是一門實踐性很強(qiáng)的專業(yè)課程。通過上機(jī)實驗,不僅可以幫助學(xué)生較好地掌握java語言和面向?qū)ο蟪绦蛟O(shè)計的基本概念、基本方法和技巧,同時也可培養(yǎng)學(xué)生獨(dú)立設(shè)計程序的能力,理解面向?qū)ο蟮木幊趟枷?。實驗教學(xué)目的:1 使學(xué)生通過實驗,驗證書本和課堂教學(xué)內(nèi)容:逐步理解、體會、消化、鞏
2、固和補(bǔ)充課堂所學(xué)主要內(nèi)容;2 培養(yǎng)學(xué)生設(shè)計與動手能力:通過設(shè)計性的實驗任務(wù),通過實踐環(huán)節(jié)理解 java語言的基本結(jié)構(gòu)和程序設(shè)計方法。通過親手編程掌握 java 語言編程的方法,從而提高學(xué)生的分析問題、解決問題的能力和動手能力。通過實驗,要求學(xué)生應(yīng)達(dá)到以下實驗?zāi)芰εc標(biāo)準(zhǔn):1 熟練掌握java程序的編輯、編譯、運(yùn)行步驟及程序調(diào)試的方法,熟練運(yùn)用java語言進(jìn)行面向?qū)ο蟪绦蛟O(shè)計2 深入理解面向?qū)ο蟮姆庋b、繼承和多態(tài)等特性3 利用java語言進(jìn)行異常處理4 能利用java語言進(jìn)行磁盤數(shù)據(jù)文件的建立及讀寫操作編程。5 利用java語言實現(xiàn)多線程編程。二、 主要儀器設(shè)備(所開實驗的主要儀器設(shè)備)每個學(xué)生上
3、機(jī)使用一臺pc機(jī)進(jìn)行程序開發(fā),pc機(jī)的硬件、軟件環(huán)境如下:1)硬件:cpu p4 3.0ghz 256m內(nèi)存,80g 硬盤空間。2)軟件:操作系統(tǒng):windows xp開發(fā)工具:myeclipse 8.5、jsdk1.6.1_02軟件開發(fā)包三、實驗項目名稱和學(xué)時分配 序號實驗項目名稱學(xué)時分配實驗屬性實驗類型實驗者類別必開/選開1初步的面向?qū)ο蟮某绦蛟O(shè)計2專業(yè)類設(shè)計性本科生必開2面向?qū)ο蟪绦蛟O(shè)計的繼承、多態(tài)等特性的練習(xí)2專業(yè)類設(shè)計性本科生必開3異常類的定義及處理2專業(yè)類設(shè)計性本科生必開4文件的讀/寫操作2專業(yè)類設(shè)計性本科生必開5多線程編程2專業(yè)類設(shè)計性本科生必開四、實驗課考核方式1.實驗報告:每
4、位同學(xué)必須獨(dú)立書寫實驗報告,注意:不得抄襲他人的報告(或給他人抄襲),一旦發(fā)現(xiàn),成績?yōu)榱惴?。實驗報告的?nèi)容應(yīng)包括以下幾個部分:1) 按照實驗內(nèi)容和實驗步驟要求完成實驗任務(wù)后,若程序已通過實驗指導(dǎo)教師驗收,則只在報告中重點(diǎn)給出調(diào)試分析過程描述:包括測試數(shù)據(jù)、測試輸出結(jié)果,以及對程序調(diào)試過程中存在問題的思考(列出主要問題的出錯現(xiàn)象、出錯原因、解決方法及效果等);若程序未完全通過驗收,則需再此基礎(chǔ)上提交包含詳細(xì)注釋的源程序清單。2) 根據(jù)思考題要求,重點(diǎn)描述需求分析、概要設(shè)計和詳細(xì)設(shè)計過程,并提交包含詳 細(xì)注釋的源程序清單,最后詳細(xì)描述程序調(diào)試分析過程。2.考核方式2.1 實驗課成績根據(jù)學(xué)生的實驗預(yù)
5、習(xí)、實驗紀(jì)律、實驗動手能力、實驗結(jié)果和實驗報告等幾個部分進(jìn)行綜合評定,并給出優(yōu)、良、中、及格和不及格共五檔成績。 2.2 實驗課成績占課程總成績的30%。五、實驗指導(dǎo)書及主要參考書1 蔡翠平 主編 唐大仕 編著,java程序設(shè)計(修訂本) ,北方交通大學(xué)出版社 清華大學(xué)出版社,2007年. 2 侯捷譯,java編程思想(第二版),機(jī)械工業(yè)出版社,2002.3 丁振凡,java語言實用教程,北京郵電大學(xué)出版社,2005.4 丁振凡,java語言實用教程實驗指導(dǎo),北京郵電大學(xué)出版社,北京,2006目 錄實驗一 熟悉java程序的編輯、編譯和運(yùn)行環(huán)境1實驗二 初步的面向?qū)ο蟮某绦蛟O(shè)計練習(xí)7實驗三 面
6、向?qū)ο蟪绦蛟O(shè)計的繼承、多態(tài)等特性的練習(xí)12實驗四 異常類的定義及處理17實驗五 流、文件及基于文本的應(yīng)用23主要參考文獻(xiàn)27實驗一 初步的面向?qū)ο蟮某绦蛟O(shè)計練習(xí)一、實驗?zāi)康?) 掌握類和構(gòu)造方法的定義。2) 掌握創(chuàng)建類實例的方法。3) 初步掌握面向?qū)ο蟮木幊趟枷攵嶒瀮?nèi)容1) 編寫一個java application,利用jdk軟件包中的工具在命令行方式下編譯并運(yùn)行這個程序,使之能夠輸出字符串信息“hello world! ”。(注:其后的所有實驗如無特別說明,均是在myeclipse8.5環(huán)境下編譯執(zhí)行)2) 編寫程序?qū)崿F(xiàn)如下功能:已知學(xué)生類有域變量(姓名、考號、綜合成績、體育成績)和方法
7、(獲取綜合成績、獲取體育成績、顯示基本信息),學(xué)校類有靜態(tài)變量(錄取分?jǐn)?shù)線)和方法(設(shè)置錄取分?jǐn)?shù)、獲取錄取分?jǐn)?shù)線),錄取類有方法(獲取學(xué)生是否符合錄取條件,其中錄取條件為綜合成績在錄取分?jǐn)?shù)線之上,或體育成績在96分以上并且綜合成績大于300分)。現(xiàn)要求編寫程序輸出一組學(xué)生對象中被某學(xué)校錄取的學(xué)生基本信息。三、實驗儀器、設(shè)備及材料每個學(xué)生上機(jī)使用一臺pc機(jī)進(jìn)行程序開發(fā),pc機(jī)的硬件、軟件環(huán)境如下:1)硬件:cpu p4 3.0ghz 256m內(nèi)存,80g 硬盤空間。2)軟件:操作系統(tǒng):windows xp開發(fā)工具:myeclipse 8.5、jsdk1.6.1_02軟件開發(fā)包四、實驗原理1) 類
8、、域、方法類體中包括域和方法,都是類的成員。一個類可以定義多個域和方法。(1)域也就是類的靜態(tài)屬性,也稱為變量、成員變量等,格式為: 類型名 域名; 在定義域變量前,還可以加修飾符。(2)方法是類的動態(tài)屬性。java的方法與其它語言中的函數(shù)類似。由方法頭和方法體組成:修飾符1 返回類型 方法名(形參列表)throws 異常列表方法體語句;其中,形參列表格式為:形參類型 形參名1,形參類型 形參名22)類和對象(1)類(class):抽象的集合概念。類包括系統(tǒng)類庫中已定義好的類和用戶自定義的類(2)對象(實例instance):實際個體。創(chuàng)建某個類的具體對象(類似變量聲明),具體定義格式為:類名
9、 對象變量=new 類名(參數(shù));(3)構(gòu)造方法:構(gòu)造方法的名字與類名相同。創(chuàng)建對象時自動調(diào)用,并對對象進(jìn)行初始化操作。注意:構(gòu)造方法前面沒有返回類型定義,它沒有返回值,也不是void。不能return;java每個類都至少有一個構(gòu)造方法系統(tǒng)默認(rèn)無參數(shù)構(gòu)造方法;一旦定義了構(gòu)造方法,系統(tǒng)不再提供默認(rèn)構(gòu)造方法。(4)對象的使用:要訪問或調(diào)用一個對象的域或者方法,使用 . 操作符。一般形式: 引用對象變量名.域/方法名;如 p.sayhello(); 由于只能用對象變量來訪問這個對象的域或方法,不通過引用變量就沒有辦法訪問,體現(xiàn)了面向?qū)ο蟮摹胺庋b性” 。3)靜態(tài)域和靜態(tài)方法(1)靜態(tài)域用static
10、修飾的域?qū)儆陬惖撵o態(tài)域(靜態(tài)量,類變量),不用static修飾的為實例變量(實例域)。靜態(tài)域的特點(diǎn)如下:l 它們是類的域,不屬于任何一個類的具體對象實例。它保存在類的內(nèi)存區(qū)域的公共存儲單元。l 對于該類的任何一個實例對象,靜態(tài)域是一個公共的存儲單元。l 任何一個類的對象訪問它,取到的都是相同的值;l 任何一個類的對象修改它,那么也是在對同一個內(nèi)存單元進(jìn)行操作。(2)靜態(tài)方法用static修飾的方法屬于類的靜態(tài)方法,又稱為類方法。不用static修飾的方法為實例方法。類方法的本質(zhì)是該方法屬于整個類,而不是屬于某個實例。靜態(tài)方法具有如下特點(diǎn):l static方法是屬于整個類的,它在內(nèi)存中的代碼段將
11、隨著類的定義而進(jìn)行分配和裝載。而非static的方法是屬于某個對象的,在這個對象創(chuàng)建時,對象的方法在內(nèi)存中有自己的代碼段。l static方法不能操縱屬于某個對象的成員變量,只能處理屬于類的成員變量,即只能處理static域和方法。l 類方法中不能訪問實例變量,也不能使用this或super。l 調(diào)用類方法可以使用類名,也可以用具體對象名。五、實驗步驟1) 編寫一個java application,利用jdk軟件包中的工具編譯并運(yùn)行這個程序。步驟(1):編寫、編譯java 源程序。打開myeclipse,新建一個java文件,鍵入如下程序代碼: public class hello publi
12、c static void main(string args) system.out.println(hello,world!); 將文件命名為hello.java,注意保存文件hello.java到路徑“e:自己學(xué)號java”下。步驟(2):編譯java 源程序java 源程序編寫后,要使用java 編譯器(javac.exe)將java 源程序編譯成字節(jié)碼文件。java 源程序都是擴(kuò)展名為 .java 的文本文件。編譯時首先讀入java 源程序,然后進(jìn)行語法檢查,如果出現(xiàn)問題就終止編譯。語法檢查通過后,生成可執(zhí)行程序代碼即字節(jié)碼,字節(jié)碼文件名和源文件名相同,擴(kuò)展名為 .class。打開命令
13、提示符窗口(msdos 窗口)進(jìn)入java 源程序所在路徑e:自己學(xué)號java”。鍵入編譯器文件名和要編譯的源程序文件名,具體如下:set path=%path%;c:program filesjdk1.6.0_02bin; javac -d class hello.java按回車鍵開始編譯(注意:文件名h 要大寫,否則運(yùn)行會出問題)。如果源程序沒有錯誤,則屏幕上沒有輸出,鍵入 “dir”按回車鍵后可在當(dāng)前目錄中看到生成了class子目錄,在class子目錄下有一個同名字的.class 文件即“hello. class”。否則,將顯示出錯信息。步驟(3):運(yùn)行java 程序 按如下命令回到e:
14、自己學(xué)號java目錄 :cd . 使用java 解釋器(java.exe)可將編譯后的字節(jié)碼文件hello.class 解釋為本地計算機(jī)代碼。在命令提示符窗口或msdos 窗口鍵入解釋器文件名和要解釋的字節(jié)碼文件名:java classpath e:自己學(xué)號javaclass hello按回車鍵即開始解釋并可看到運(yùn)行結(jié)果。2) 編寫程序?qū)崿F(xiàn)如下功能:已知學(xué)生類有域變量(姓名、考號、綜合成績、體育成績)和方法(獲取綜合成績、獲取體育成績、顯示基本信息),學(xué)校類有靜態(tài)變量(錄取分?jǐn)?shù)線)和方法(設(shè)置錄取分?jǐn)?shù)、獲取錄取分?jǐn)?shù)線),錄取類有方法(獲取學(xué)生是否符合錄取條件,其中錄取條件為綜合成績在錄取分?jǐn)?shù)線
15、之上,或體育成績在96分以上并且綜合成績大于300分)。現(xiàn)要求編寫程序輸出一組學(xué)生對象中被某學(xué)校錄取的學(xué)生基本信息。(注意:這個程序可以直接在eclipse集成編輯環(huán)境中完成)步驟(1):定義類stduent,并添加如下域變量: string name; string id; float comscore; float score ;步驟(2):在類student中添加如下方法,并編寫代碼實現(xiàn)具體方法的功能: student(string name,string id, float comscore, float score) float getcomscore() float getscor
16、e() void print() 步驟(3)定義類school,并添加靜態(tài)變量 static float scoreline; 添加靜態(tài)方法 static float getscoreline() static void setscoreline(float score)步驟(4)定義一個application程序類enroll并添加方法: public static void main(string args) static boolean isenroll(student s)步驟(5)保存文件名為enroll.java, 然后編譯、調(diào)試和運(yùn)行程序。六、實驗報告要求每位同學(xué)必須獨(dú)立書寫實驗
17、報告,注意:不得抄襲他人的報告(或給他人抄襲),一旦發(fā)現(xiàn),成績?yōu)榱惴?。實驗報告的?nèi)容應(yīng)包括以下幾個部分:1) 按照實驗內(nèi)容和實驗步驟要求完成實驗任務(wù)后,若程序已通過實驗指導(dǎo)教師驗收,則只在報告中重點(diǎn)給出調(diào)試分析過程描述:包括測試數(shù)據(jù)、測試輸出結(jié)果,以及對程序調(diào)試過程中存在問題的思考(列出主要問題的出錯現(xiàn)象、出錯原因、解決方法及效果等);若程序未完全通過驗收,則需再此基礎(chǔ)上提交包含詳細(xì)注釋的源程序清單。2) 根據(jù)思考題要求,重點(diǎn)描述需求分析、概要設(shè)計和詳細(xì)設(shè)計過程,并提交包含詳細(xì)注釋的源程序清單,最后詳細(xì)描述程序調(diào)試分析過程。七、實驗注意事項1) 每個同學(xué)必須按時參加實驗,并且每次實驗前提交程序
18、代碼初稿,否則不能進(jìn)行實驗。2) 實驗中嚴(yán)禁隨意拷貝其他同學(xué)的程序或給其他同學(xué)拷貝。3) 在實驗過程中,愛惜實驗器材,避免對實驗器材造成不必要的損害。如發(fā)生損壞照價賠償。4) 在實驗用機(jī)上使用移動存儲設(shè)備之前,必須用殺毒軟件進(jìn)行檢測,否則不能使用。5) 每位同學(xué)完成實驗任務(wù)后,必須經(jīng)過實驗指導(dǎo)老師驗收后方可離開。實驗二 面向?qū)ο蟪绦蛟O(shè)計的繼承、多態(tài)等特性的練習(xí)一、實驗?zāi)康?) 掌握類的繼承機(jī)制。2) 熟悉類中成員變量和方法的訪問控制。3) 熟悉方法或構(gòu)造方法多態(tài)性。4) 熟悉接口的定義方法。二、實驗內(nèi)容1) 編寫程序?qū)崿F(xiàn)如下功能:已知person類包含三個公共域變量(姓名、性別、年齡)和一個構(gòu)
19、造方法,student類是person類的派生類,包含兩個新的公共域變量(學(xué)號、班號)、兩個公共方法(修改年齡、顯示基本信息)及一個構(gòu)造方法。定義一組學(xué)生對象,并初始化他們的基本信息,然后依次輸出。2) 輸入課本例5-4的源程序,觀察其運(yùn)行結(jié)果,然后將shape類分別定義為一個抽象類和接口,然后將源程序進(jìn)行修改,讓其實現(xiàn)相同功能。三、實驗儀器、設(shè)備及材料每個學(xué)生上機(jī)使用一臺pc機(jī)進(jìn)行程序開發(fā),pc機(jī)的硬件、軟件環(huán)境如下:1)硬件:cpu p4 3.0ghz 256m內(nèi)存,80g 硬盤空間。2)軟件:操作系統(tǒng):windows xp開發(fā)工具: myeclipse 8.5、jsdk1.6.1_02軟
20、件開發(fā)包四、實驗原理1)類的繼承面向?qū)ο笳Z言允許從一個已有的類父類定義新的類子類,從而形成繼承關(guān)系。父類是所有子類的公共域和公共方法的集合,每個子類是父類的特殊化。子類繼承父類的狀態(tài)和行為,同時也可以修改父類,并可以添加新的狀態(tài)和行為。(1)域的繼承和添加子類可以從父類那里繼承所有的沒有被private和static修飾的域。那么子類就無需再重復(fù)定義。還可以在子類中定義其獨(dú)特的域變量:(2)方法的繼承、覆蓋和添加父類的非private方法也可以被子類自動繼承。同時子類也可以重新定義與父類同名的方法,實現(xiàn)對其的覆蓋/重置(override/overlay)。在覆蓋父類方法時注意應(yīng)保持完全相同的方
21、法名、返回值和參數(shù)類型列表,即重寫父類中的方法。另外子類還可以重載父類的方法或添加新的方法。2)訪問修飾符java提供4種訪問權(quán)限: public、protected、private和默認(rèn)。描 述private默 認(rèn)protectedpublic同一類中同一包中對子類同一包中對非子類不同包中對子類不同包中對非子類3)抽象類和接口(1)抽象類和抽象方法一個方法如果沒有定義方法體,則稱該方法為抽象方法。包含一個或多個抽象方法的類,稱為抽象類。 定義抽象類后,其它類可以對它進(jìn)行擴(kuò)充并且通過實現(xiàn)其中的抽象方法,使抽象類具體化。java語言中,用abstract 關(guān)鍵字來修飾一個類時,這個類叫做抽象類,
22、用abstract 關(guān)鍵字來修飾一個方法時,這個方法叫做抽象方法。抽象類的語法格式如下abstract class /抽象類抽象方法的語法格式如下abstract returntype abstractmethod(paramlist) /抽象方法抽象類必須被繼承,抽象方法必須被重寫。抽象方法只需聲明,無需實現(xiàn),抽象類不能被實例化。若類中包含了抽象方法,則該類必須被定義為抽象類。(2)接口接口是抽象類的一種,只包含常量和方法的定義,而沒有方法的實現(xiàn),且其方法都是抽象方法。它的用處體現(xiàn)在下面幾個方面:l 通過接口指明多個類需要實現(xiàn)的方法。l 通過接口實現(xiàn)不相關(guān)類的相同行為,而無需考慮這些類之間的
23、關(guān)系。l 通過接口了解對象的交互界面,而無需了解對象所對應(yīng)的類。 接口的定義包括接口聲明和接口體,接口聲明的格式如下:public interface interfacenameextends listofsuperinterface 其中,extends 子句與類聲明的extends子句基本相同,不同的是一個接口可有多個父接口,用逗號隔開,而一個類只能有一個基類。4)多態(tài)的兩種表現(xiàn)形式(1)同一類中的方法多態(tài)(方法重載):同一類中允許多個同名方法,通過參數(shù)的數(shù)量、類型的差異進(jìn)行區(qū)分。(2)子類對父類方法的重新定義(方法覆蓋):方法名、返回值和參數(shù)形態(tài)完全一樣。五、實驗步驟1) 編寫程序?qū)崿F(xiàn)如
24、下功能:已知person類包含三個公共域變量(姓名、性別、年齡)和一個構(gòu)造方法,student類是person類的派生類,包含兩個新的公共域變量(學(xué)號、班號)、兩個公共方法(構(gòu)造方法、修改年齡、顯示基本信息)和一個構(gòu)造方法。定義一組學(xué)生對象,并初始化他們的基本信息,然后依次輸出。步驟(1):定義類person,并添加以下公共域變量 public string name; public char sex; public int age; 添加構(gòu)造方法person(string name,char sex,int age)步驟(2):基于類person派生類student,并添加如下公共域變量和方
25、法 public string classno; public string sno; public void updateage(int age) void tostring() student(string name,char sex,int age,string sno,string name) super(name,sex,age); . 步驟(3):定義一個包含main方法的application程序類teststudentperson,初 始化一個學(xué)生類對象數(shù)組,并利用循環(huán)語句顯示所有學(xué)生基本信息。2) 輸入課本例5-4的源程序,觀察其運(yùn)行結(jié)果,然后將shape類分別定義為一個抽象
26、類和接口,然后將源程序進(jìn)行修改,讓其實現(xiàn)相同功能。步驟(1):在編輯調(diào)試工具中輸入課本例5-4testvirtualinvoke.java程序,編譯運(yùn)行,觀察程序的運(yùn)行結(jié)果,并思考為什么產(chǎn)生這樣的結(jié)果。步驟(2):將shape類定義為abstact class shape,然后重新定義shape抽象類的派生類circle、triangle、line,最后編譯運(yùn)行,觀察程序的運(yùn)行結(jié)果是否和上面的結(jié)果相同。步驟(3):將shape定義為interface shape,然后基于shape接口實現(xiàn)類circle、triangle、line,最后編譯運(yùn)行,觀察程序的運(yùn)行結(jié)果是否和上面的結(jié)果相同。六、實驗
27、報告要求每位同學(xué)必須獨(dú)立書寫實驗報告,注意:不得抄襲他人的報告(或給他人抄襲),一旦發(fā)現(xiàn),成績?yōu)榱惴?。實驗報告的?nèi)容應(yīng)包括以下幾個部分:1) 按照實驗內(nèi)容和實驗步驟要求完成實驗任務(wù)后,若程序已通過實驗指導(dǎo)教師驗收,則只在報告中重點(diǎn)給出調(diào)試分析過程描述:包括測試數(shù)據(jù)、測試輸出結(jié)果,以及對程序調(diào)試過程中存在問題的思考(列出主要問題的出錯現(xiàn)象、出錯原因、解決方法及效果等);若程序未完全通過驗收,則需再此基礎(chǔ)上提交包含詳細(xì)注釋的源程序清單。2) 根據(jù)思考題要求,重點(diǎn)描述需求分析、概要設(shè)計和詳細(xì)設(shè)計過程,并提交包含詳細(xì)注釋的源程序清單,最后詳細(xì)描述程序調(diào)試分析過程。七、實驗注意事項1) 每個同學(xué)必須按時
28、參加實驗,并且每次實驗前提交程序代碼初稿,否則不能進(jìn)行實驗。2) 實驗中嚴(yán)禁隨意拷貝其他同學(xué)的程序或給其他同學(xué)拷貝。3) 在實驗過程中,愛惜實驗器材,避免對實驗器材造成不必要的損害。如發(fā)生損壞照價賠償。4) 在實驗用機(jī)上使用移動存儲設(shè)備之前,必須用殺毒軟件進(jìn)行檢測,否則不能使用。5) 每位同學(xué)完成實驗任務(wù)后,必須經(jīng)過實驗指導(dǎo)老師驗收后方可離開。八、思考題編寫一個完整的java application 程序,包含circle類、cylinde類、test類、具體要求如下:circle類 屬性radius:double型,表示圓的半徑 方法double findarea():返回圓的面積(半徑若為
29、r,則面積為r2)double getradius ():返回圓的半徑cylinder類繼承circle 類,并有以下屬性和方法: 屬性length: double 型,表示圓柱體的高 方法cylinder(double r, double l ):構(gòu)造函數(shù),給圓柱體的半徑和高賦初值double findvolume():返回圓柱體的體積tostring():返回圓柱體的半徑、高、體積等信息test 類作為主類要完成測試功能 生成cylinder 對象 輸出對象的描述信息 import java.io.*;public class test public static void main(st
30、ring args) class circle / circle類定義,請?zhí)顚懲暾?final float pi=3.14159f;double radius; double getradius() return radius; circle(double r) double findarea() class cylinder extends circle / cylinder類定義 double length;cylinder(double r, double l) double findvolume() public string tostring() 實驗三 異常類的定義及處理一、實驗?zāi)?/p>
31、的1) 了解異常處理方法。2) 熟悉并掌握常見異常的捕獲方法。3) 熟悉jdk中已經(jīng)定義的若干異常類的層次結(jié)構(gòu)。4) 掌握自定義異常類的創(chuàng)建方法。二、實驗內(nèi)容1) 編寫程序?qū)崿F(xiàn)如下功能:生成并捕獲到negativearraysizeexception和indexoutofboundsexception類型的異常,并顯示捕獲到的異常信息。然后在此基礎(chǔ)上生成并捕獲到nullpointerexception類型的異常,并顯示捕獲到的異常信息。2) 編寫程序?qū)崿F(xiàn)如下功能:計算兩個數(shù)之和,參與求和運(yùn)算的每個數(shù)的值都必須在10-20之間,當(dāng)任意一個數(shù)超出范圍時,拋出自己的異常。三、實驗儀器、設(shè)備及材料每個
32、學(xué)生上機(jī)使用一臺pc機(jī)進(jìn)行程序開發(fā),pc機(jī)的硬件、軟件環(huán)境如下:1)硬件:cpu p4 3.0ghz 256m內(nèi)存,80g 硬盤空間。2)軟件:操作系統(tǒng):windows xp開發(fā)工具:myeclipse 8.5、jsdk1.6.1_02軟件開發(fā)包四、實驗原理1)異常的分類(1)異常是一個對象,它繼承自throwable類。(2)error:由java虛擬機(jī)生成并拋出,java程序不做處理。(3)exception:其它由于編程錯誤及偶然的外在因素導(dǎo)致的一般性問題。一般我們所說的異常都是指exception及其子類。2)異常處理結(jié)構(gòu)try catch(異常類名 異常形參名) catch(異常類名
33、 異常形參名) finally 說明:(1)finally總是執(zhí)行,它是異常處理的統(tǒng)一出口,常用來實現(xiàn)資源釋放、文件關(guān)閉等功能。(2)發(fā)生異常時,try塊內(nèi)的后續(xù)語句不再執(zhí)行。(3)catch按照次序進(jìn)行匹配檢查處理,找到一個匹配者,不再找其他;catch的排列要按照先個別化再一般化的次序,不再將父類異常排在前,子類異常排在后。3) 常見的系統(tǒng)異常(1) arithmeticexception(2) arrayindexoutofbandsexception(3) arraystoreexception(4) ioexception(5) filenotfoundexception(6) nu
34、llpointerexception(7) malformedurlexception(8) numberformatexception(9) outofmemoryexception4) 自定義異常的步驟(1)聲明一個新的異常類,使之以exception類或其他某個已經(jīng)存在的系統(tǒng)異常類或用戶定義異常類為父類。(2)為新的異常類定義屬性和方法,或重載父類的屬性和方法,使這些屬性和方法能夠體現(xiàn)該類對應(yīng)的錯誤信息。五、實驗步驟1) 編寫程序?qū)崿F(xiàn)如下功能:生成并捕獲到negativearraysizeexception和indexoutofboundsexception類型的異常,并顯示捕獲到的異常
35、信息。然后在此基礎(chǔ)上生成并捕獲到nullpointerexception類型的異常,并顯示捕獲到的異常信息。步驟(1):編寫一個包含main方法的application類testexception,然后定義一個方法void arraysize()生成并捕獲negativearraysizeexception異常。步驟(2):添加一個方法void outofbound()生成并捕獲indexoutofboundsexception異常。步驟(3):添加一個方法void nullpointer()生成并捕獲indexoutofboundsexception異常。步驟(4):在main方法中分別調(diào)用
36、以上三個方法。步驟(5):將文件保存為testexception.java,然后編譯、調(diào)試應(yīng)用程序。步驟(6):將outofbound()方法中捕獲異常的語句注釋掉,重新編譯程序,看看會不會有什么語法錯誤?如果沒錯誤,執(zhí)行程序看結(jié)果有什么不同?步驟(7):將array方法重新定義為如下形式:void arraysize() throws negativearraysizeexception然后修改arraysize方法中捕獲negativearraysizeexception異常的語句執(zhí)行部分。2) 編寫程序?qū)崿F(xiàn)如下功能:計算兩個數(shù)之和,參與求和運(yùn)算的每個數(shù)的值都必須在10-20之間,當(dāng)任意一
37、個數(shù)超出范圍時,拋出自己的異常。步驟(1):基于系統(tǒng)異常類exception,定義自己的異常類numberrangeexception。步驟(2):定義包含main方法的application類selfexception。步驟(3):在selfexception類中添加公共方法: public static int selfexceptiontest(int int1,int int2) throws numberrangeexception使之能在求int1,int2兩個數(shù)和之前檢查兩個數(shù)的數(shù)值范圍,若符合條件則求和,否則拋出異常numberrangeexception。步驟(4):在mai
38、n方法中調(diào)用selfexceptiontest方法。步驟(5):保存文件為selfexception.java,然后編譯并調(diào)試程序。步驟(6):修改main方法中調(diào)用selfexceptiontest方法的實參,看看程序的運(yùn)行結(jié)果有什么不同。六、實驗報告要求每位同學(xué)必須獨(dú)立書寫實驗報告,注意:不得抄襲他人的報告(或給他人抄襲),一旦發(fā)現(xiàn),成績?yōu)榱惴帧嶒瀳蟾娴膬?nèi)容應(yīng)包括以下幾個部分:1) 按照實驗內(nèi)容和實驗步驟要求完成實驗任務(wù)后,若程序已通過實驗指導(dǎo)教師驗收,則只在報告中重點(diǎn)給出調(diào)試分析過程描述:包括測試數(shù)據(jù)、測試輸出結(jié)果,以及對程序調(diào)試過程中存在問題的思考(列出主要問題的出錯現(xiàn)象、出錯原因、
39、解決方法及效果等);若程序未完全通過驗收,則需再此基礎(chǔ)上提交包含詳細(xì)注釋的源程序清單。2) 根據(jù)思考題要求,重點(diǎn)描述需求分析、概要設(shè)計和詳細(xì)設(shè)計過程,并提交包含詳細(xì)注釋的源程序清單,最后詳細(xì)描述程序調(diào)試分析過程。七、實驗注意事項1) 每個同學(xué)必須按時參加實驗,并且每次實驗前提交程序代碼初稿,否則不能進(jìn)行實驗。2) 實驗中嚴(yán)禁隨意拷貝其他同學(xué)的程序或給其他同學(xué)拷貝。3) 在實驗過程中,愛惜實驗器材,避免對實驗器材造成不必要的損害。如發(fā)生損壞照價賠償。4) 在實驗用機(jī)上使用移動存儲設(shè)備之前,必須用殺毒軟件進(jìn)行檢測,否則不能使用。5) 每位同學(xué)完成實驗任務(wù)后,必須經(jīng)過實驗指導(dǎo)老師驗收后方可離開。八、
40、思考題1)翻譯下列常用異常類的描述信息outofmemoryerror a class instance creation expression, array creation expression , or string concatenation operatior expression throws an outofmemoryerror if there is insufficient memory available. negativearraysizeexception an array creation expression throws a negativearraysizee
41、xception if the value of any dimension expression is less than zero.nullpointerexception a field access throws a nullpointerexception if the value of the object referenceexpression is null. a method invocation expression that invokes an instance method throws a nullpointerexception if the target ref
42、erence is null. an array access throws a nullpointerexception if the value of the array referenceexpression is null. arrayindexoutofboundsexception an array access throws an arrayindexoutofboundsexception if the value of the array index expression is negative or greater than or equal to the length o
43、f the array. classcastexception thrown to indicate that the code has attempted to cast an object to a subclass of which it is not an instance. for example, the following code generates a classcastexception: object x = new integer(0); system.out.println(string)x);arithmeticexception thrown when an ex
44、ceptional arithmetic condition has occurred. for example, an integer divide by zero throws an instance of this class. arraystoreexceptionan assignment to an array component of reference type throws an arraystoreexception when the value to be assigned is not compatible with the component type of the
45、array.nosuchfieldexceptionsignals that the class doesnt have a field of a specified name.nosuchmethodexceptionthrown when a particular method cannot be foundnumberformatexceptionthrown to indicate that the application has attempted to convert a string to one of the numeric types, but that the string
46、 does not have the appropriate format. filenotfoundexceptionsignals that an attempt to open the file denoted by a specified pathname has failed.ioexceptionsignals that an i/o exception of some sort has occurred. this class is the general class of exceptions produced by failed or interrupted i/o oper
47、ations2)編寫一個程序,用于根據(jù)用戶輸入的命令行參數(shù)數(shù)量來計算長方形、正方形、三角形的面積。如果輸入的參數(shù)個數(shù)為1、2、3則它們應(yīng)分別對應(yīng)正方形、長方形、三角形,如果參數(shù)值為0,則異常處理方法顯示錯誤消息。提示:自己定義一個異常類,表示參數(shù)個數(shù)0這一異常。然后定義一個抽象的父類,并提供一個抽象的方法area(),再派生出三個子類,重寫area方法,最后在main方法中編寫測試邏輯。實驗四 流、文件及基于文本的應(yīng)用一、實驗?zāi)康?) 理解數(shù)據(jù)流的概念。2) 理解java流的層次結(jié)構(gòu)。3) 理解并掌握文件的讀寫操作方法。二、實驗內(nèi)容1) 編寫一個java application程序,接受用戶輸
48、入的10個整數(shù),比較并輸出其中的最大值和最小值。三、實驗儀器、設(shè)備及材料每個學(xué)生上機(jī)使用一臺pc機(jī)進(jìn)行程序開發(fā),pc機(jī)的硬件、軟件環(huán)境如下:1)硬件:cpu p4 3.0ghz 256m內(nèi)存,80g 硬盤空間。2)軟件:操作系統(tǒng):windows xp開發(fā)工具:myeclipse 8.5、jsdk1.6.1_02軟件開發(fā)包四、實驗原理1)字節(jié)流和字符流java的輸入/輸出流中,根據(jù)它們的數(shù)據(jù)類型,主要可分為兩類:字符流(character stream)和字節(jié)流(btye stream)。(1)字符流 字符流的輸入/輸出數(shù)據(jù)是字符碼,即unicode字符。字符流有兩個基本類:reader類和wr
49、iter類。reader類用于處理字符輸入流,writer類用于處理字符輸出流。(2)字節(jié)流 字節(jié)流是按字節(jié)讀/寫二進(jìn)制數(shù)據(jù)。字節(jié)流有兩個基本的類:inputstream類和outputstream類。inputstream類用于處理字節(jié)輸入流,outputstream類用于處理字節(jié)輸出流。 2)節(jié)點(diǎn)流和處理流按照流是否直接與特定的地方(如磁盤、內(nèi)存等)相連,分為節(jié)點(diǎn)流與處理流。(1)節(jié)點(diǎn)流:可以從或者向一個特定的地方(節(jié)點(diǎn))讀寫數(shù)據(jù)。如文件流filereader。(2)處理流:是對一個已經(jīng)存在的流的連接和封裝,通過所封裝的流的功能調(diào)用實現(xiàn)數(shù)據(jù)讀、寫功能。處理流也稱過濾流,如緩沖處理流buff
50、eredreader。3)文件字節(jié)流(1)文件字節(jié)輸入流 fileinputstream(文件字節(jié)輸入流)主要用于文件的輸入,通過該類創(chuàng)建的對象可以從文件中讀數(shù)據(jù)。fileinputstream類提供的常用方法有: fileinputstream(string name) throws filenotfoundexception 創(chuàng)建一個關(guān)聯(lián)到實際文件的文件字節(jié)輸入流,name指定了要關(guān)聯(lián)到的文件的路徑名。如果該文件不存在或是不能被打開,將拋出一個filenotfoundexception異常。 fileinputstream(file file) throws filenotfoundexc
51、eption 創(chuàng)建一個關(guān)聯(lián)到實際文件的文件字節(jié)輸入流,file是一個文件對象。如果該文件不存在或是不能被打開,將拋出一個filenotfoundexception異常 (2)文件字節(jié)輸出流 fileoutputstream(文件字節(jié)輸出流)主要用于文件的輸出,通過該類創(chuàng)建的對象可以往文件中寫數(shù)據(jù)。fileoutputstream類提供的常用方法有: fileoutputstream (string name) throws filenotfoundexception fileoutputstream (file file) throws filenotfoundexception fileou
52、tputstream (string name, boolean append) throws filenotfoundexception fileoutputstream (file file, boolean append) throws filenotfoundexception4)字符文件流filereader用于文件的輸入,該類以字符流的方式從文件中讀數(shù)據(jù)。filereader類提供的常用方法有: filereader(string name) throws filenotfoundexception filereader (file file) throws filenotfoun
53、dexception filewriter用于文件的輸出,該類以字符流的方式往文件中寫數(shù)據(jù)。filewriter類提供的常用方法有: filewriter (string name) throws filenotfoundexception filewriter (string name, boolean append) throws filenotfoundexception filewriter (file file, boolean append) throws filenotfoundexception 5)java application命令行參數(shù)java application是用
54、命令行來啟動執(zhí)行的,命令行參數(shù)就成為向java application傳入數(shù)據(jù)的常用方式。在啟動java應(yīng)用程序時可以一次性的向應(yīng)用程序中傳遞0到多個參數(shù)。格式為: java 類名 參數(shù)1 參數(shù)2 參數(shù)間用空格隔開,如果參數(shù)本身有空格,則要用一對雙引號引起來。命令行參數(shù)被系統(tǒng)以string數(shù)組的方式傳遞給main方法,由參數(shù)args接收。五、實驗步驟1) 編寫一個java application程序,接受用戶輸入的10個整數(shù),比較并輸出其中的最大值和最小值。步驟(1):定義一個包含main方法的application類maxminclass。步驟(2):在maxminclass類中添加如下兩個方法,分別求取10個整數(shù)的最大值和最小值:static int maxint(int data,in
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 圖樣印刷行業(yè)經(jīng)營分析報告
- 體操訓(xùn)練凳產(chǎn)品供應(yīng)鏈分析
- 船用鋼制艙口蓋市場發(fā)展前景分析及供需格局研究預(yù)測報告
- 工作和人員的安排行業(yè)市場調(diào)研分析報告
- 在線兒童成長教育行業(yè)經(jīng)營分析報告
- 特教發(fā)展歷程-探究特殊教育之路
- 氣動發(fā)電機(jī)產(chǎn)品供應(yīng)鏈分析
- 化妝服務(wù)行業(yè)經(jīng)營分析報告
- 農(nóng)業(yè)自動駕駛行業(yè)營銷策略方案
- 工業(yè)空氣調(diào)節(jié)用散熱器產(chǎn)品供應(yīng)鏈分析
- 山西省太原市2023-2024學(xué)年五年級上學(xué)期期中數(shù)學(xué)試卷
- 人民群眾是歷史的創(chuàng)造者
- (高清版)DZT 0208-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 金屬砂礦類
- 《堂堂正正做君子》課件
- 綠化及景觀工程施工組織設(shè)計
- 拍攝腳本范文
- 藥品市場調(diào)查與客戶需求分析培訓(xùn)
- 收費(fèi)員安全培訓(xùn)
- 《字體設(shè)計》課程標(biāo)準(zhǔn)
- 【語文】福建省廈門市同安區(qū)2023-2024學(xué)年八年級上學(xué)期期中考試試題(解析版)
- 煙草雪茄培訓(xùn)課件講解
評論
0/150
提交評論