面向?qū)ο蟪绦蛟O(shè)計(Java)實驗指導(dǎo)書09信管_第1頁
面向?qū)ο蟪绦蛟O(shè)計(Java)實驗指導(dǎo)書09信管_第2頁
面向?qū)ο蟪绦蛟O(shè)計(Java)實驗指導(dǎo)書09信管_第3頁
面向?qū)ο蟪绦蛟O(shè)計(Java)實驗指導(dǎo)書09信管_第4頁
面向?qū)ο蟪绦蛟O(shè)計(Java)實驗指導(dǎo)書09信管_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGEPAGE30南昌工程學(xué)院《面向?qū)ο蟪绦蛟O(shè)計(Java)》實驗指導(dǎo)書09信息管理與信息系統(tǒng)專業(yè)雷金娥編2011年9月目錄TOC\o"1-1"\h\z\u實驗一JavaApplication程序的編輯、編譯和運行 2實驗二Java程序設(shè)計基礎(chǔ) 4實驗三類的封裝 6實驗四類的繼承 7實驗五類的多態(tài) 9實驗六接口與實現(xiàn)接口的類 13實驗七異常的拋出、捕獲并處理 15實驗八圖形用戶界面設(shè)計 20實驗九線程設(shè)計 22實驗十輸入/輸出流與文件操作 24實驗十一網(wǎng)絡(luò)通信 26實驗十二數(shù)據(jù)庫應(yīng)用設(shè)計 29實驗一JavaApplication程序的編輯、編譯和運行一、實驗?zāi)康?.熟悉JDK開發(fā)環(huán)境。

2.熟悉Edit編輯器的使用。

3.掌握JavaApplication的程序結(jié)構(gòu)和開發(fā)過程。二、實驗設(shè)備和儀器電腦三、實驗內(nèi)容及要求1.JDK開發(fā)環(huán)境

(1)JDK1.4.1開發(fā)環(huán)境安裝在“C:\JDK1.4.1\”目錄下。

(2)設(shè)置環(huán)境變量PATH和CLASSPATH(如果在autoexec.bat中沒有進行設(shè)置)。

進入命令行(MS-DOS)方式,進行如下設(shè)置:

SETPATH=C:\JDK1.4.1\BIN;%PATH%

SETCLASSPATH=.;%CLASSPATH%

2.Edit編輯器3.掌握JavaApplication程序開發(fā)過程四、實驗原理及步驟1.實驗原理一個java應(yīng)用程序是由若干個類組成的,其中最多能有一個public類。有且只能有一個類含有main方法。Java源程序的擴展名為java。Java源程序的名字必須和public類的類名相同,如果沒有public類,只要和其中任一類的類名相同就行。編譯java源程序會產(chǎn)生字節(jié)碼(.class)文件,源程序有幾個類就會產(chǎn)生幾個class文件。運行時,只運行含有main方法的class文件。2.步驟(1)打開Edit編輯器。

(2)鍵入如下程序:

importjava.io.*;

publicclassHelloWorld1{

publicstaticvoidmain(Stringarg[]){

System.out.println("HelloWorld!");

}

}

(3)檢查無誤后(注意大小寫)保存文件??蓪⑽募4嬖凇癉:\Java\”目錄中,注意文件名為HelloWorld1.java。

(4)進入命令行(MS-DOS)方式,設(shè)定當(dāng)前目錄為“D:\Java\”,運行Java編譯器:

D:\Java>javacHelloWorld1.java

(5)如果輸出錯誤信息,則根據(jù)錯誤信息提示的錯誤所在行返回Edit編輯器進行修改。常見錯誤是類名與文件名不一致、當(dāng)前目錄中沒有所需源程序、標(biāo)點符號全角等。

如果沒有輸出任何信息或者出現(xiàn)“deprecation”警告,則認為編譯成功,此時會在當(dāng)前目錄中生成HelloWorld1.class文件。

(6)利用Java解釋器運行這個JavaApplication程序,并查看運行結(jié)果。

D:\Java>javaHelloWorld1五、實驗結(jié)果分析及實驗報告要求1.寫出JAVA開發(fā)環(huán)境配置按步驟2.編寫、運行一個簡單的JAVA應(yīng)用程序,將源代碼寫清楚

實驗二Java程序設(shè)計基礎(chǔ)一、實驗?zāi)康?.掌握標(biāo)識符的定義規(guī)則。

2.掌握表達式的組成。

3.掌握各種數(shù)據(jù)類型及其使用方法。

4.理解定義變量的作用,掌握定義變量的方法。

5.掌握各種運算符的使用及其優(yōu)先級控制。6.掌握Java數(shù)組的聲明、初始化以及使用方法,理解Java數(shù)組是Java對象的含義。7.掌握String類的常用成員方法。二、實驗設(shè)備和儀器電腦三、實驗內(nèi)容及要求1.定義一個數(shù)組,具有以下方法:publicstaticintmax(inttable[]);publicstaticintmin(inttable[]);publicstaticvoidsort(inttable[]);publicstaticintindexOf(inttable[],intkey);publicstaticbooleanisSorted(inttable[]);2.找出一個二維數(shù)組的鞍點。3.判斷該字符串是否是回文,回文是如下形式的字符串:abcdcba四、實驗原理及步驟1.實驗原理Java中數(shù)據(jù)類型分為基本數(shù)據(jù)類型與復(fù)合數(shù)據(jù)類型,相應(yīng)地變量分為基本類型與引用類型。基本類型變量有8種,而類、接口和數(shù)組變量是引用類型?;绢愋妥兞渴褂煤虲及C++完全一樣,但引用類型的使用有點與C中的指針相同(注意Java中并沒有指針的概念)。引用類型變量的使用有引用空間與數(shù)據(jù)空間的概念,當(dāng)變量聲明時只是給該變量分配引用空間(或可以理解為地址空間),數(shù)據(jù)空間并沒有分配。例如定義:Mydatetoday;定義的變量名today為引用空間的變量名today=newMydate();實例化Mydate類的一個對象,也即產(chǎn)生了數(shù)據(jù)空間用于存放該對象的數(shù)據(jù)。并且將該對象的地址賦給today,這樣對象名today就指向了相應(yīng)的數(shù)據(jù)空間。數(shù)組的定義和使用舉例inta[]=newint[6];程序的流程控制結(jié)構(gòu)和C語言基本類同,有順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。但初學(xué)面向?qū)ο缶幊倘菀追赋绦蚪Y(jié)構(gòu)上的毛病,許多同學(xué)編出的程序和面向過程語言的一樣只是換成Java的語法。原則上面向?qū)ο缶幊痰慕Y(jié)構(gòu),應(yīng)該以類為基本組織單位。2.步驟略五、實驗結(jié)果分析及實驗報告要求1.總結(jié)出Java基本語法和C語言語法的區(qū)別。2.寫出上述三個程序代碼。要求記錄編譯和執(zhí)行Java程序當(dāng)中的系統(tǒng)錯誤信息提成示,并給出解決辦法。

實驗三類的封裝一、實驗?zāi)康耐ㄟ^編程和上機實驗理解Java語言是如何體現(xiàn)面向?qū)ο缶幊袒舅枷耄私忸惖姆庋b方法,以及如何創(chuàng)建類和對象,了解成員變量和成員方法的特性,掌握面向?qū)ο蟪绦蛟O(shè)計的方法。二、實驗設(shè)備和儀器電腦三、實驗內(nèi)容及要求編寫Point類包括橫坐標(biāo)x,縱坐標(biāo)y,聲明構(gòu)造方法和拷貝構(gòu)造方法,聲明若干get()和set()方法獲得和設(shè)置坐標(biāo),聲明move()方法將當(dāng)前坐標(biāo)移動若干位置。四、實驗原理及步驟設(shè)計類來描述真實客觀世界中的事物,使用類的成員變量來表示事物的屬性和狀態(tài),使用類的成員方法來提供對成員變量的訪問或修改使用修飾符來限定類的成員變量或成員方法的屬性有時需要公開一些變量和方法,有時需要禁止其他對象使用變量和方法,這時可以使用修飾符來實現(xiàn)這個目的。常用的修飾符如下:publicprivateprotectedpackagestaticfinaltransientvolatile不同修飾符的訪問控制權(quán)限如表3.1所示。訪問權(quán)限修飾符類子類包所有類和包public√√√√private√protected√√√package√√表3.1五、實驗結(jié)果分析及實驗報告要求將上述程序運行,寫出運行結(jié)果,并分析。

實驗四類的繼承一、實驗?zāi)康?.掌握類的繼承方法。

2.掌握變量的繼承。

3.掌握方法的繼承。二、實驗設(shè)備和儀器電腦三、實驗內(nèi)容及要求1掌握子類定義方法2理解成員變量的繼承與隱藏3理解方法的繼承四、實驗原理及步驟類的繼承性練習(xí)新類可從現(xiàn)有的類中產(chǎn)生,并保留現(xiàn)有類的成員變量和方法并可根據(jù)需要對它們加以修改。新類還可添加新的變量和方法。這種現(xiàn)象就稱為類的繼承。當(dāng)建立一個新類時,不必寫出全部成員變量和成員方法。只要簡單地聲明這個類是從一個已定義的類繼承下來的,就可以引用被繼承類的全部成員。被繼承的類稱為父類或超類(superclass),這個新類稱為子類。Java提供了一個龐大的類庫讓開發(fā)人員繼承和使用。設(shè)計這些類是出于公用的目的,因此,很少有某個類恰恰滿足你的需要。你必須設(shè)計自己的能處理實際問題的類,如果你設(shè)計的這個類僅僅實現(xiàn)了繼承,則和父類毫無兩樣。所以,通常要對子類進行擴展,即添加新的屬性和方法。這使得子類要比父類大,但更具特殊性,代表著一組更具體的對象。繼承的意義就在于此。創(chuàng)建父類定義一個表示長方形的類Rectangle,其中包含兩個private的double型的成員變量length和width分別表示長方形的長和寬,定義一個有參數(shù)的構(gòu)造方法Rectangle(doublelength,doublewidth),在其中為長方形對象初始化,定義一個無參數(shù)的構(gòu)造方法,在其中調(diào)用有參數(shù)的構(gòu)造方法,使創(chuàng)建的對象的長和寬都為0。再定義用來求長方形周長的方法perimeter()和求面積的方法area()。創(chuàng)建子類定義一個長方體類Cuboid,使其繼承Rectangle類,其中包含一個表示高的double型成員變量height;定義一個構(gòu)造方法Cuboid(doublelength,doublewidth,doubleheight);再定義一個求長方體表面積的方法area(doubleheight)和求體積的方法volume()。編寫一個名為CuboidTest的應(yīng)用程序,求一個長、寬和高都為10的長方體的體積。五、實驗結(jié)果分析及實驗報告要求將上述程序運行,寫出運行結(jié)果,并分析。

實驗五類的多態(tài)一、實驗?zāi)康?.掌握成員變量的隱藏和方法的覆蓋;

2.掌握this和super關(guān)鍵字的使用;

3.理解final類和abstract類的含義,掌握如何定義和使用final類和abstract類;4.掌握多態(tài)的概念,二、實驗設(shè)備和儀器電腦三、實驗內(nèi)容及要求1理解方法的重載2理解方法的覆蓋類的繼承發(fā)生在多個類之間,而類的多態(tài)只發(fā)生在同一個類上。在一個類中,可以定義多個同名的方法,只要確定它們的參數(shù)個數(shù)和類型不同。這種現(xiàn)象稱為類的多態(tài)。多態(tài)使程序簡潔,為程序員帶來很大便利。在OOP中,當(dāng)程序要實現(xiàn)多個相近的功能時,就給相應(yīng)的方法起一個共同的名字,用不同的參數(shù)代表不同的功能。這樣,在使用方法時不論傳遞什么參數(shù),只要能被程序識別就可以得到確定的結(jié)果。類的多態(tài)性體現(xiàn)在方法的重載(overload)上,包括成員方法和構(gòu)造方法的重載。方法的重載(1)程序功能:使用同名方法對兩個、三個或用數(shù)組容納的一組數(shù)進行排序(2)程序源代碼如下。classIntSort{publicStringsort(inta,intb){if(a>b)returna+""+b;elsereturnb+""+a;}publicStringsort(inta,intb,intc){intswap;if(a<b){swap=a;a=b;b=swap;}if(a<c){swap=a;a=c;c=swap;}if(b<c){swap=b;b=c;c=swap;}returna+""+b+""+c;}publicStringsort(intarr[]){Strings="";intswap;for(inti=0;i<arr.length;i++)for(intj=0;j<arr.length-1;j++)if(arr[j]>arr[j+1]){swap=arr[j];arr[j]=arr[j+1];arr[j+1]=swap;}for(inti=0;i<arr.length;i++)s=s+arr[i]+"";returns;}}publicclassEXP3_11{publicstaticvoidmain(String[]args){IntSorts=newIntSort();inta=30,b=12,c=40;intarr[]={34,8,12,67,44,98,52,23,16,16};System.out.println("兩個數(shù)的排序結(jié)果:"+s.sort(a,b));System.out.println("三個數(shù)的排序結(jié)果:"+s.sort(a,b,c));System.out.println("數(shù)組的排序結(jié)果:"+s.sort(arr));}}實驗記錄內(nèi)容要求:寫出上述程序的運行結(jié)果,并總結(jié)方法重載的合法條件。構(gòu)造函數(shù)的重載構(gòu)造方法的名稱和類同名,沒有返回類型。盡管構(gòu)造方法看起來和一般的成員方法沒有差別,但它不是方法,也不是類的成員。因此,構(gòu)造方法不能直接調(diào)用,只能由new操作符調(diào)用。構(gòu)造方法對于類是十分重要的,對象的初始化任務(wù)要靠構(gòu)造方法來完成。重載構(gòu)造方法的目的是提供多種初始化對象的能力,使程序員可以根據(jù)實際需要選用合適的構(gòu)造方法來初始化對象。實驗記錄內(nèi)容:找出實驗四中的父子類中的構(gòu)造方法重載語句。方法的覆蓋通過繼承子類可以繼承父類中所有可以被子類訪問的成員方法,但如果子類的方法與父類方法同名,則不能繼承,此時稱子類的方法覆蓋了父類的方法,簡稱為方法覆蓋(override)。方法覆蓋為子類提供了修改父類成員方法的能力。例如,子類可以修改層層繼承下來的Object根類的toString方法,讓它輸出一些更有用的信息。下面的程序顯示了在子類Circle中添加toString方法,用來返回圓半徑和圓面積信息。下列有一個Circle類,要求編寫兩個方法覆蓋Object類的equals方法(如果兩個圓半徑相等就認為兩個圓相等)和toString方法(輸出結(jié)果:圓半徑:x厘米,圓面積y平方厘米,其中x,y是相應(yīng)的值)classCircle{ privateintradius; publicCircle(intr){ this.setRadius(r); } publicvoidsetRadius(intr){ radius=r; } publicintgetRadius(){ returnradius; } publicdoublearea(){ return3.14159*radius*radius; } /*此處定義toString()方法定義*/ publicbooleanequals(Objecto){ Circlec=(Circle)o; returnradius==c.radius; } /*此處定義equals()方法定義*/ publicStringtoString(){ return"圓半徑:"+radius+"圓面積為:"+3.14*radius*radius; }}publicclassTest{ publicstaticvoidmain(Stringargs[]){ Circlec1=newCircle(10); Circlec2=newCircle(10); System.out.println("\n"+c1.equals(c2)+c1.toString()); }4.4抽象類的編程應(yīng)用。編寫一個能產(chǎn)生三個柱體對象,分別是底部形狀分別是Circle、Triangle(三角形),Rectangle(長方形)的情況,并計算相應(yīng)體積。思路:該程序有兩種實現(xiàn)方式。1)定義三個柱體類,分別是CirclePillar類、TrianglePillar類、RectanglePillar類,分別生成三個類的實例,但該方法的缺陷是什么?2)設(shè)計一個Shape抽象類,該類有一個抽象方法area(),設(shè)計一個Pillar(柱體)類,該類有兩個成員變量:Shape和height,并創(chuàng)建3個實例:底部形狀分別為Circle、Triangle(三角形),Rectangle(長方形)的柱體類,并計算相應(yīng)體積。實驗記錄要求:寫出相應(yīng)代碼。五、實驗結(jié)果分析及實驗報告要求分析程序運行結(jié)果

實驗六接口與實現(xiàn)接口的類一、實驗?zāi)康?.理解接口的概念和作用2.掌握接口的定義3.掌握如何實現(xiàn)接口4.掌握API基礎(chǔ)5.掌握String類型和其他基本數(shù)據(jù)類型之間的相互轉(zhuǎn)換二、實驗設(shè)備和儀器電腦三、實驗內(nèi)容及要求1.產(chǎn)生三個柱體對象,分別是底部形狀分別是Circle、Triangle(三角形),Rectangle(長方形)的情況,并計算相應(yīng)體積。(提示定義一個Pillar類,成員變量底面積用Shape接口實現(xiàn))2.編程判斷用戶輸入的電子郵箱、電話號碼(包括家庭電話和手機號碼)是否合法,并將該程序打包至tools包下。3.寫出String和基本數(shù)據(jù)類型(int、boolean、double)相互類型轉(zhuǎn)換的語句。四、實驗原理及步驟1.接口概念和定義概念:Java中的接口是一系列方法的聲明,是一些方法特征的集合,一個接口只有方法的特征沒有方法的實現(xiàn),因此這些方法可以在不同的地方被不同的類實現(xiàn),而這些實現(xiàn)可以具有不同的行為(功能)。定義[public]interface接口[extends父接口列表]{[public][static][final]數(shù)據(jù)類型成員變量=常量值;[public][abstract]返回值類型成員方法[(參數(shù)列表)];}2.實現(xiàn)接口的類定義:[修飾符]class類<泛型>[extends父類][implements接口列表]實現(xiàn)接口的非抽象類必須實現(xiàn)所有接口中的所有抽象方法,否則聲明為抽象類。3.正則表達式可以表示字符串的組成規(guī)則,由字符和量詞構(gòu)成。預(yù)定義字符類(轉(zhuǎn)義字符序列):\d——代表任何數(shù)字字符,即[0-9]\D——代表任何非數(shù)字字符\w——代表任何單字字符(字母a~z、A~Z、下劃線、0~9),即[a-zA-Z_0-9]\W——代表任何非單字字符\s——代表任何空白字符\S——代表任何非空白字符沒有預(yù)定義字符類的字符,可在方括號[]指明,如[246]表示2或者4或者6三個字符2量詞——表示匹配字符的個數(shù):*——代表匹配字符個數(shù)為0個或多個+——代表匹配字符個數(shù)為1個或多個?——代表匹配字符個數(shù)為0個或1個{n}——代表匹配字符個數(shù)正好為n個{n,}——代表匹配字符個數(shù)至少為n個{n,m}——代表匹配字符個數(shù)至少為n個,最多為m個4.package打包語句格式:packagemypackage;必須放在程序的第一行,其作用是將當(dāng)前程序的class文件打包至mypackage包(文件夾)中。5.String和其他基本類型轉(zhuǎn)換1)將字符串轉(zhuǎn)換成基本類型數(shù)據(jù)通過各個基本類型的類方法parseXXX來實現(xiàn)的2)將基本類型數(shù)據(jù)轉(zhuǎn)換成字符串通過String的類方法valueOf來實現(xiàn),該方法有多個重載,一般形式為:s.valueOf(parament)五、實驗結(jié)果分析及實驗報告要求填寫實驗內(nèi)容的結(jié)果,要詳細

實驗七異常的拋出、捕獲并處理一、實驗?zāi)康牧私猱惓n惖淖饔谜莆諏Ξ惓5牟东@和處理方式二、實驗設(shè)備和儀器電腦三、實驗內(nèi)容及要求將每個知識點都進行上機實踐,具體內(nèi)容見實驗原理與步驟。四、實驗原理及步驟使用try…catch語句處理異常異常類型匹配的處理方式程序功能:在程序中主動產(chǎn)生一個ArithmeticException類型被0除的異常,并用catch語句捕獲這個異常。最后通過ArithmeticException類的對象e的方法getMessage給出異常的具體類型并顯示出來。程序源代碼如下。publicclassEXP5_1{publicstaticvoidmain(String[]arg3){System.out.println("這是一個異常處理的例子\n");try{inti=10;i/=0;}catch(ArithmeticExceptione){e.printStrackTrace();}finally{System.out.println("finally語句被執(zhí)行");}}}實驗記錄要求:寫出上述程序的輸出結(jié)果。包含多個catch子句的異常處理方式程序功能::在try子句中設(shè)計兩個可能出現(xiàn)的異常,當(dāng)a為0時會發(fā)生異常。另外一個是肯定的異常,因為數(shù)組c的長度為1,定義c[42]是為法的。通過兩個catch子句分別來捕獲異常。程序源代碼如下。publicclassEXP5_3{publicstaticvoidmain(String[]args){try{inta=args.length;System.out.println("\na="+a);intb=42/a;intc[]={1};c[42]=99;}catch(ArithmeticExceptione){System.out.println("發(fā)生了被0除:"+e);}catch(ArrayIndexOutOfBoundsExceptione){System.out.println("數(shù)組下標(biāo)越界:"+e);}}}實驗記錄要求:上述源代碼運行結(jié)果,總結(jié)多個catch語句捕獲異常方式。使用throw語句拋出異常在上面的實驗中,可以發(fā)現(xiàn),異常對象是Java運行時由系統(tǒng)拋出的。拋出異常也可以通過使用throw語句實現(xiàn)。throw是Java語言的關(guān)鍵字,用來告知編譯器此處要發(fā)生一個異常。throw后面要跟一個新創(chuàng)建的異常類對象,用于指出異常的名稱和類型。程序源代碼如下。publicclassEXP5_4{staticvoidthrowProcess(){try{thrownewNullPointerException("空指針異常");}catch(NullPointerExceptione){System.out.println("\n在throwProcess方法中捕獲"+e.getMessage());throwe;}}publicstaticvoidmain(Stringargs[]){throwProcess();}}實驗報告要求:請寫出該程序運行結(jié)果。使用throws語句throws子句一般用來表明在使用該方法時可能拋出異常但不捕獲的異常。異常由系統(tǒng)來處理。throws子句也可以指出拋出異常是RuntimeException或自定義異常類,即異常的類型,以便準(zhǔn)備調(diào)用其它方法捕獲它,這種情況一般需要兩個方法來分別處理拋出異常和處理異常。程序功能:在這個程序中的mathod方法中使用throws子句拋出異常,在main方法中捕獲處理異常。程序源代碼如下,請在橫線內(nèi)填入相應(yīng)的代碼。importjava.io.*;publicclassEXP5_5{staticvoidmathod()IllegalAccessException{System.out.println("\n在mathod中拋出一個異常");newIllegalAccessException();}publicstaticvoidmain(Stringargs[]){try{mathod();}catch(IllegalAccessExceptione){System.out.println("在main中捕獲異常:"+e);}}}使用finally子句當(dāng)一個異常被拋出時,程序的執(zhí)行流程就不再是連續(xù)的了,會跳過某些語句,甚至?xí)捎跊]有與之匹配的catch子句而過早地返回,結(jié)束程序的運行。為了確保一段代碼不管發(fā)生什么異常都能被執(zhí)行,可以使用finally子句。每個try語句至少都要有一個與之相配的catch或finally子句。從一個方法中返回到調(diào)用它的另外一個方法,可以通過return語句或通過一個沒有被捕獲的異常,但finally子句總是在返回前被執(zhí)行。程序功能:在類EXP5_6的mathodA方法中使用try子句捕獲異常,使用finally子句處理異常。程序源代碼如下。classEXP5_6{staticvoidmathodA(){try{System.out.println("\nmathodA拋出一個異常");thrownewRuntimeException();}finally{System.out.println("執(zhí)行mathodA的finally");}}staticvoidmathodB(){try{System.out.println("mathodB正常返回");return;}finally{System.out.println("執(zhí)行mathodB的finally");}}publicstaticvoidmain(Stringargs[]){try{mathodA();}catch(Exceptione){mathodB();}}}創(chuàng)建自定義的異常類程序功能:通過繼承Exception異常類創(chuàng)建一個自定義異常類MyException,然后再創(chuàng)建一個主類EXP5_7使用自定義異常類MyException。程序源代碼如下。classMyExceptionextendsException{privateintx;MyException(inta){x=a;}publicStringtoString(){return"自定義異常類MyException";}}publicclassEXP5_7{staticvoidmathod(inta)throwsMyException{System.out.println("\t此處引用mathod("+a+")");if(a>10)thrownewMyException(a);//主動拋出MyExceptionSystem.out.println("正常返回");}publicstaticvoidmain(Stringargs[]){try{System.out.println("\n進入監(jiān)控區(qū),執(zhí)行可能發(fā)生異常的程序段");mathod(8);mathod(20);mathod(6);}catch(){System.out.println("\t程序發(fā)生異常并在此處進行處理");System.out.println("\t發(fā)生的異常為:"+e.toString());}System.out.println("這里可執(zhí)行其它代碼");}}五、實驗報告要求:請按實驗內(nèi)容要求寫出實驗報告。

實驗八圖形用戶界面設(shè)計一、實驗?zāi)康恼莆認ava圖形組件和布局管理器的使用掌握使用Java事件處理機制的使用掌握圖形界面的各種控件的使用如:標(biāo)簽、文本框、按鈕、復(fù)選框、列表框、窗框等二、實驗設(shè)備和儀器電腦三、實驗內(nèi)容及要求設(shè)計一個簡單計算器,如下圖所示。在“操作數(shù)”標(biāo)簽右側(cè)的兩個文本框輸入操作數(shù),當(dāng)單擊操作符+,-,×,÷按鈕時,對兩個操作數(shù)進行運算并將結(jié)果填入到“結(jié)果”標(biāo)簽右側(cè)的文本框中。1.運用一種或多種布局管理器,繪制出一個簡單的計算器;2.為按鈕注冊事件監(jiān)聽器,使其點擊按鈕,并在顯示區(qū)域同步顯示當(dāng)前輸入或運算結(jié)果;3.編譯運行程序,檢查計算器的正確性;四、實驗原理及步驟原理:通過圖形用戶界面(GUI),用戶和程序之間可以方便地進行交互。javax.swing包中的組件類可以幫助我們完整界面的設(shè)計。javax.swing包的JComponent類是java.awt包中的Container類的一個直接子類、Component類的間接子類。javax.swing包中的JFrame類和JDialog類分別是java.awt包中Frame類和Dialog類的直接子類、Window類的間接子類。在學(xué)習(xí)GUI編程時,必須很好地理解并掌握兩個概念:容器類和組件類,必須很好地掌握java的事件處理機制。步驟:1.在紙上設(shè)計好計算器的布局,考慮好使用哪些布局管理類能實現(xiàn)你設(shè)計的布局。2.設(shè)計界面:定義一個Frame類的子類MyFrame,并將所有按鈕和文本框組件定義為其成員,通過布局類設(shè)計每個組件在MyFrame中的位置。3.計算器上每個組件所產(chǎn)生的事件,對應(yīng)的事件處理接口有哪些方法,哪個方法是處理當(dāng)前事件的方法,等等。為每個按鈕增加監(jiān)聽器,可用類MyFrame的當(dāng)前對象this作為監(jiān)聽器。4.MyFrame實現(xiàn)事件接口ActionListener,即重寫actionPerformed方法.主要的算法就在actionPerformed方法中.5.設(shè)計好算法。當(dāng)單擊數(shù)字按鈕時會在文本框中顯示相應(yīng)的數(shù)字,表示此數(shù)字即將參與運算。當(dāng)單擊第一個運算符時,要做的工作是將文本框中數(shù)字作為一個運算對象保存到變量one中,并將此運算符保存到變量fu中,等待另一個運算對象的輸入。當(dāng)單擊第二(或第三…)運算符時,要做的工作是將當(dāng)前文本框中的數(shù)字和one的值按fu中的運算符進行運算,并將運算結(jié)果存到one中,依次類推直到遇到“=”結(jié)束。五、實驗結(jié)果分析及實驗報告要求1.采用布局管理器進行界面的布局;2.學(xué)會對不同的事件用相應(yīng)的事件處理器;3.寫出實驗報告。要求記錄編譯和執(zhí)行Java程序當(dāng)中的系統(tǒng)錯誤信息提材示,并給出解決辦法。(附運行界面、源代碼)。

實驗九線程設(shè)計一、實驗?zāi)康?.掌握多線程的概念及線程實現(xiàn)的兩種方法。2.掌握Java線程的狀態(tài)及狀態(tài)的改變。3.掌握Java程序音頻、圖像的處理。二、實驗設(shè)備和儀器電腦三、實驗內(nèi)容與要求編程實現(xiàn)一副牌發(fā)牌程序,發(fā)送由1~52組成的一個隨機數(shù)序列,發(fā)牌程序可參照教材217頁。四、實驗原理及步驟Java中提供了2種創(chuàng)建線程的方法:(1)繼承Thread類(2)實現(xiàn)Runnable接口這兩者都在java.lang包下。方法一繼承Thread類publicThread();publicThread(Runnabletarget);publicThread(Runnabletarget,Stringname);publicThread(Stringname);這種方法創(chuàng)建線程的代碼一般如下:publicclassThread1extendsThread//定義Thread類的子類Thread1,成為線程類。{//Thread1構(gòu)造方法 publicvoidrun()//覆蓋Thread類的run()方法{//定義線程的操作}}方法二:實現(xiàn)Runnable接口例如:publicclassRunnable1implementsRunnable{intk=0;publicRunnable1(intk){this.k=k;}publicvoidrun(){inti=k;System.out.println();while(i<50){System.out.print(i+"");i+=2;}}publicstaticvoidmain(Stringargs[]){Runnable1r1=newRunnable1(1);//創(chuàng)建線程體的目標(biāo)對象Runnable1r2=newRunnable1(2);Threadt1=newThread(r1);//以目標(biāo)對象創(chuàng)建線程Threadt2=newThread(r2);t1.start();t2.start();}}五、實驗結(jié)果分析及實驗報告要求實驗報告僅僅只需寫出和教材217頁不同的代碼即可。

實驗十輸入/輸出流與文件操作一、實驗?zāi)康恼莆栈谧止?jié)流進行輸入/輸出的方法、基于字符流進行輸入/輸出的方法、字節(jié)流與字符流之間的轉(zhuǎn)換方法、對于字節(jié)文件和字符文件的讀寫方法,以及對輸入/輸出過程中可能發(fā)生的異常的處理方法。二、實驗設(shè)備和儀器電腦 三、實驗內(nèi)容及要求1、用字節(jié)輸入輸出流和字符輸入輸出流將鍵盤輸入內(nèi)容保存成文件a.txt,并實現(xiàn)文件復(fù)制到b.txt。2、有純文件“Early-Precaution.txt”,將這篇短文內(nèi)所有大寫字母改成小寫,并將更改后的短文寫到純文本文件”joke.txt”里。TherewasanAmericancouplewhohadnochildren,sotheywantedtoadoptachild.Finally,anorphanagecontactedthem,saying,"Wehaveababyforadoption.It'saRussianorphan."Thecouplewasdelightedandwenttobringthebabyhome.Onthewayhome,theystoppedbyauniversitytoenrollinaRussiancourse."WhydoyouwanttolearnRussian?TheEnglishthatwespeakisaverygoodlanguage,"theuniversitysecretaryasked."Well,wejustadoptedaRussianbaby.WhenhebeginstospeakRussianinafewyears,weareafraidthatwemightnotbeabletounderstandhim,"thecouplereplied.四、實驗原理及步驟當(dāng)程序需要讀取磁盤上的數(shù)據(jù)或?qū)⒊绦蛑械臄?shù)據(jù)存儲到磁盤時,就可以使用輸入/輸出流,簡稱I/O流。I/O流提供一條通道程序,可以使用這條通道讀取”源”中的數(shù)據(jù),或把數(shù)據(jù)送到”目的地”。FileOutputStream類創(chuàng)建的對象稱為文件字節(jié)輸出流,可按字節(jié)將數(shù)據(jù)寫入到文件中。FileInputStream類創(chuàng)建的對象稱為文件字節(jié)輸入流,可按字節(jié)讀取文件中的數(shù)據(jù)。FileReader類創(chuàng)建的對象稱為文件字符輸入流,可按字符讀取文件中的數(shù)據(jù)。Filewriter類創(chuàng)建的對象稱為文件字符輸出流,可按字符將數(shù)據(jù)寫入到文件中。BufferedReader類創(chuàng)建的對象稱為緩沖輸入流,該輸入流的指向必須是一個Reader流,稱為BufferedReader流的底層流。底層流負責(zé)將數(shù)據(jù)讀入到緩沖區(qū),BufferedReader流的源就是這個緩沖區(qū),緩沖輸入流再從緩沖區(qū)讀取數(shù)據(jù)。BufferedWriter類創(chuàng)建的對象稱為緩沖輸出流,可以將BufferedWriter和FileWriter連接在一起,F(xiàn)ileWriter流稱為BufferedReader流的底層流。BufferedWriter將數(shù)據(jù)寫入緩沖區(qū),底層流負責(zé)將數(shù)據(jù)寫到最終的目的地。1.BufferedWriter對象調(diào)用newLine()可以向文件寫入回行。2.BufferedReader對象調(diào)用readLine()方法可以讀取文件的一行。五、實驗結(jié)果分析及實驗報告要求寫出實驗代碼即可。

實驗十一網(wǎng)絡(luò)通信一、實驗?zāi)康?.掌握網(wǎng)絡(luò)計算、服務(wù)器和客戶機等基本概念。2.掌握套接字與機器標(biāo)識的概念以及InetAddress類的使用。3.掌握使用ServerSocket、Socket類實現(xiàn)套接字的編程。4.了解使用DatagramSocket、DatagramPacket實現(xiàn)UDP網(wǎng)絡(luò)編程。二、實驗設(shè)備和儀器電腦三、實驗內(nèi)容及要求1.編寫一個程序能利用URLConnection所對應(yīng)的url,如””的內(nèi)容讀取出來。2.編寫圖形用戶界面的程序?qū)崿F(xiàn)聊天功能,界面如圖14.2和14.2所示:圖13.12服務(wù)器端界面13.13客戶端界面3.使用ServerSocket類與Socket類編寫一個簡單的客戶/服務(wù)器程序,實現(xiàn)的功能是客戶向服務(wù)器發(fā)送一個字符串,服務(wù)器程序?qū)⒃撟址D(zhuǎn)換成大寫字母輸出。四、實驗原理及步驟1.URLConnection類創(chuàng)建URLConnection對象之前必須先創(chuàng)建一個URL對象,然后通過調(diào)用URL類提供的openConnection()方法,就可以獲得一個URLConnection類的對象。URLConnection類的構(gòu)造方法如下:publicURLConnection(URL):用于創(chuàng)建一個指定URL的連接對象。但是,用URLConnection的構(gòu)造方法來創(chuàng)建URLConnection類對象時,并未建立與指定URL的連接,還必須調(diào)用URLConnection類的connect()方法才能建立連接。openConnection()方法的定義如下:publicURLConnectionopenConnection();下面是使用URL類的openConnection()方法建立連接的幾條語句:例如:URLurl=newURL(“”);URLConnectionconnection=url.openConnection();URLConnection類中的主要方法方法名功能說明voidconnect()建立URL連接ObjectgetContent()獲取該URL的內(nèi)容StringgetContentEncoding()獲取響應(yīng)數(shù)據(jù)的內(nèi)容編碼intgetContentLength()獲取響應(yīng)數(shù)據(jù)的內(nèi)容長度StringgetContentType()獲取響應(yīng)數(shù)據(jù)的內(nèi)容類型longgetDate()獲取響應(yīng)數(shù)據(jù)的創(chuàng)建時間longgetExpiration()獲取響應(yīng)數(shù)據(jù)的終止時間InputStreamgetInputStream()獲取該連接的輸入流longgetLastModified()獲取響應(yīng)數(shù)據(jù)的最后修改時間OutputStreamgetOutputStream()獲取該連接的輸出流2.Socket通信TCP通信中與Socket通信相關(guān)的兩個類,一個是代表服務(wù)器端套接字的ServerSocket類,另一個是代表客戶端套接字的Socket類。2.1Socket類客戶端可以通過構(gòu)造一個Socket類對象來建立與服務(wù)器的連接。Socket類的主要方法方法名功能說明voidclose()關(guān)閉Socket連接InetAddressgetInetAddress()獲取當(dāng)前連接的遠程主機的Internet地址InputStreamgetInputStream()獲取Socket對應(yīng)的輸入流InetAddressgetLocalAddress()獲取本地主機的Internet地址intgetLocalPort()獲取本地連接的端口號OutputStreamgetOutputStream()獲取該Socket的輸出流intgetPort()獲取遠程主機端口號voidshutdownInput()關(guān)閉輸入流voidshutdownOutput()關(guān)閉輸出流2.2ServerSocket類ServerSocket類用在服務(wù)器端,用來監(jiān)聽所有來自指定端口的連接,并為每個新的連接創(chuàng)建一個Socket對象。之后客戶端便可以與服務(wù)器端開始通信了。ServerSocket類的主要方法方法名功能說明Socketaccept()接收該連接并返回該連接的Socket對象voidclose()關(guān)閉此服務(wù)器的SocketInetAddressgetInetAddress()獲取該服務(wù)器Socket所綁定的地址intg

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論