JAVA語言與面向?qū)ο蟪绦蛟O(shè)計課后習(xí)題答案_第1頁
JAVA語言與面向?qū)ο蟪绦蛟O(shè)計課后習(xí)題答案_第2頁
JAVA語言與面向?qū)ο蟪绦蛟O(shè)計課后習(xí)題答案_第3頁
JAVA語言與面向?qū)ο蟪绦蛟O(shè)計課后習(xí)題答案_第4頁
JAVA語言與面向?qū)ο蟪绦蛟O(shè)計課后習(xí)題答案_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第1章面向?qū)ο筌浖_發(fā)概括1.簡述面向過程問題求解和面向?qū)ο髥栴}求解的異同。試列舉出頭向?qū)ο蠛兔嫦蜻^程的編程語言各兩種。答:面向過程問題求解,以詳細(xì)的解題過程為研究和實(shí)現(xiàn)的主體,其思維特點(diǎn)更靠近于計算機(jī);面向?qū)ο蟮膯栴}求解,則是以“對象”為主體,“對象”是現(xiàn)實(shí)世界的實(shí)體或觀點(diǎn)在計算機(jī)邏輯中的抽象表示,更靠近于人的思維特點(diǎn)。面向過程的編程語言:C,Pascal,F(xiàn)oratn。面向?qū)ο蟮木幊陶Z言:C++,Java,C#。2.簡述對象、類和實(shí)體及它們之間的相互關(guān)系。嘗試從平時接觸到的人或物中抽象出對象的觀點(diǎn)。答:面向?qū)ο蠹夹g(shù)中的對象就是現(xiàn)實(shí)世界中某個詳細(xì)的物理實(shí)體在計算機(jī)邏輯中的映射和體現(xiàn)。類是同種對象的會合與抽象。類是一種抽象的數(shù)據(jù)種類,它是所有擁有一定共性的對象的抽象,而屬于類的某一個對象則被稱為是類的一個實(shí)例,是類的一次實(shí)例化的結(jié)果。如果類是抽象的觀點(diǎn),如“電視機(jī)”,那么對象就是某一個詳細(xì)的電視機(jī),如“我家那臺電視機(jī)”。3.對象有哪些屬性?什么是狀態(tài)?什么是行為?二者之間有何關(guān)系?設(shè)有對象“學(xué)生”,試為這個對象設(shè)計狀態(tài)與行為。答:對象都擁有狀態(tài)和行為。對象的狀態(tài)又稱為對象的靜態(tài)屬性,主要指對象內(nèi)部所包含的各樣信息,也就是變量。每個對象個體都擁有自己專有的內(nèi)部變量,這些變量的值標(biāo)了然對象所處的狀態(tài)。行為又稱為對象的操作,它主要表述對象的動向?qū)傩?,操作的作用是設(shè)置或改變對象的狀態(tài)。學(xué)生的狀態(tài):姓名、性別、年紀(jì)、所在學(xué)校、所在系別、通訊地點(diǎn)、電話號碼、入學(xué)成績等;學(xué)生的行為:自我介紹、入學(xué)注冊、選課、參加比賽等。4.對象間有哪三種關(guān)系?對象“班級”與對象“學(xué)生”是什么關(guān)系?對象“學(xué)生”與對象“大學(xué)生”是什么關(guān)系?答:對象間可能存在的關(guān)系有三種:包含、繼承和關(guān)系。對象“班級”與對象“學(xué)生”是包含關(guān)系。對象“學(xué)生”與對象“大學(xué)生”是繼承關(guān)系。5.有人說“父親母親”和“兒女”之間是繼承的關(guān)系。這種說法是否正確?為什么?答:“父親母親”和“兒女”之間不是面向?qū)ο笠饬x上的“繼承”關(guān)系。因?yàn)檫@里的繼承關(guān)系是“isa”的關(guān)系,“男人”與“人”之間能夠說是繼承關(guān)系。6.面向?qū)ο蟮能浖_發(fā)包括哪些過程?OOA模型包括哪三個層次?OOD模型在OOA模型的基礎(chǔ)上引入了哪些工作?答:面向?qū)ο蟮能浖_發(fā)過程能夠大概區(qū)分為面向?qū)ο蟮钠饰?ObjectOOA)、面向?qū)ο蟮脑O(shè)計(Objectorienteddesign,OOD)、面向?qū)ο蟮膶?shí)現(xiàn)programming,OOP)三個階段。

Orientedanalysis(Objectoriented

,面向?qū)ο蟮钠饰龅闹饕饔檬敲鞔_用戶的需求,并用標(biāo)準(zhǔn)化的面向?qū)ο蟮哪P鸵?guī)范地表述這一需求,最后將形成面向?qū)ο蟮钠饰瞿P?。面向?qū)ο蟮脑O(shè)計將在OOA模型的基礎(chǔ)上引入界面管理、任務(wù)管理和數(shù)據(jù)管理三部分的內(nèi)容。7.面向?qū)ο蟮某绦蛟O(shè)計方法有哪些優(yōu)點(diǎn)?答:由于對象的觀點(diǎn)能夠以更靠近實(shí)際問題的原貌和實(shí)質(zhì)的方式來表述和辦理這些問題,所以面向?qū)ο蟮能浖_發(fā)方法比過去面向過程的方法有更好的靈活性、可重用性和可擴(kuò)展性,使得上述“剖析—設(shè)計—實(shí)現(xiàn)”的開發(fā)過程也更為高效、快捷。第2章Java概括1.簡述Java編譯和運(yùn)行的基本方法。答:編譯能夠使用JDK中的工具。比如:javac運(yùn)行Java程序則能夠使用

JDK提供的解釋器是。比如:javaHelloWorldApp2.下載并安裝JDK軟件包,3.嘗試查察其中的JDK文檔。答:Java編程的基本工具包是JDK(JavaDevelopmentKit)。JDK是Sun公司免費(fèi)提供的開發(fā)、運(yùn)行Java程序的基本軟件,它能夠在Windows及Unix兩種平臺下使用。常用的版本是,,等。能夠從網(wǎng)站下載較新的版本,如(也稱為)。JDK文檔也能夠從網(wǎng)上下載。3.編寫一個JavaApplication輸出“WelcometoJavaWorld!”。

,利用

JDK軟件包中的工具編譯并運(yùn)行這個程序,在屏幕上答:見程序。publicclassEx2_3{publicstaticvoidmain(String[]args){"Welcomtojavavorld");}}4.編寫一個JavaApplet,使之能夠在瀏覽器中顯示“WelcometoJavaAppletWorld!”的字符串信息。答:見程序。import.*;import.*;publicclassEx2_4extendsApplet{;publicclassEx2_6{publicstaticvoidmain(String[]args){Strings="";doublec=0;doubled=0;try{BufferedReaderin=newBufferedReader(newInputStreamReader( ));請輸入一個數(shù):");s=( );c=(s);請輸入另一個數(shù):");s=( );d=(s);}catch(IOExceptione){}"這兩個數(shù)的積為:"+(c*d));}}7.編寫一個程序,從兩個文本框中接收兩個數(shù)字,然后計算這兩個數(shù)的積。答:見程序。import.*;import.*;importclassEx2_7extendsApplet{TextFieldin1=newTextField(10);TextFieldin2=newTextField(10);Buttonbtn=newButton("Labelout=newLabel("

求兩個數(shù)的積");用于顯示結(jié)果的標(biāo)簽

");publicvoidinit( ){setLayout(newFlowLayout( ));add(in1);add(in2);add(btn);add(out);(newBtnActionAdapter( ));}classBtnActionAdapterimplementsActionListener{publicvoidactionPerformed(ActionEvente){Strings1=( );doubled1=(s1);Strings2=( );doubled2=(s2);doubleresult=d1*d2;(d1+"X"+d2+"="+result);}}}8.常用的集成開發(fā)工擁有哪些?各有什么特點(diǎn)?答:常用的集成開發(fā)工具包括:Borland公司出品的Jbuilder,Sun公司出品的JavaWorkshop,IBM公司的VisualAgeforJava,Oracle公司的JavaDevelop,等等。此外,Symantec公司的VisualCafé也是著名的Java開發(fā)工具。近來,Eclipse也是使用很廣的集成開發(fā)工具。第3章數(shù)據(jù)運(yùn)算、流控制、數(shù)組1.簡述Java程序的組成。怎樣判斷主類?下面的程序有幾處錯誤?怎樣更正,這個程序的源代碼應(yīng)當(dāng)保存成什么名字的文件?publicclassMyJavaClass{publicstaticvoidmain( ){.printIn("AmIwrong?");}.printIn("

程序結(jié)束。

")

;}答:一個復(fù)雜的程序可由一個至多個Java源程序言件組成,每個文件中能夠有多個類定義。一般的Java源程序言件由以下三部分組成:package語句;(0句—1句)import語句;(0句—多句)類定義(1個—多個類定義)這里所說的主類是指程序中含有main( )方法的類。上面的示例程序中的錯誤主要在于拼寫,如:點(diǎn)及分號應(yīng)當(dāng)用西文的;

printIn

中的大寫字母I應(yīng)改為小寫字母l;此外,main( )方法應(yīng)當(dāng)帶參數(shù),改為:publicstaticvoidmain(String[]argvs)import.*;import.*;importclassEx2_7extendsApplet{TextFieldin1=newTextField(10);TextFieldin2=newTextField(10);Buttonbtn=newButton("Labelout=newLabel("

求兩個數(shù)的積");用于顯示結(jié)果的標(biāo)簽

");publicvoidinit( ){setLayout(newFlowLayout( ));add(in1);add(in2);add(btn);add(out);(newBtnActionAdapter( ));}classBtnActionAdapterimplementsActionListener{publicvoidactionPerformed(ActionEvente){Strings1=( );doubled1=(s1);Strings2=( );doubled2=(s2);doubleresult=d1*d2;(d1+"X"+d2+"="+result);}}}2.Java有哪些基本數(shù)據(jù)種類?寫出int型所能表達(dá)的最大、最小數(shù)據(jù)。答:Java中定義了4類/8種基本數(shù)據(jù)種類:1)邏輯型——boolean2)整數(shù)型——byte,short,int,long3)浮點(diǎn)數(shù)型——float,double4)字符型——char其中整型int占4個字節(jié),其范圍為-。3.Java的字符采用何種編碼方案?有何特點(diǎn)?寫出五個常有的轉(zhuǎn)義符。答:char(字符型)是用Unicode編碼表達(dá)的字符,在內(nèi)存中占兩個字節(jié)。由于Java的字符類型采用了一種新的國際標(biāo)準(zhǔn)編碼方案——Unicode編碼,這樣便于東方字符和西方字符辦理,這樣與其他語言相比,Java辦理多語種的能力大大加強(qiáng)。常有的轉(zhuǎn)義符,如:\'單引號字符\''雙引號字符\\反斜杠字符\r回車\n換行4.Java對表記符命名有什么規(guī)定,下面這些表記符哪些是對的?哪些是錯的?錯在哪里?(1)MyGame(2)_isHers(3)2JavaProgram(4)Java-Visual-Machine(5)_$abc答:表記符能夠由編程者自由指定,可是需要按照—定的語法例定。表記符要知足如下的規(guī)定:表記符能夠由字母、數(shù)字和下劃線(_)、美元符號($)組合而成。表記符必須以字母、下劃線或美元符號開頭,不能以數(shù)字開頭。在實(shí)際應(yīng)用表記符時,應(yīng)當(dāng)使表記符能一定程度上反應(yīng)它所表示的變量、常量、對象或類的意義,這樣程序的可讀性會更好。題中的表記符中的(3)不對,因?yàn)橛脭?shù)字開頭了,(4)也不對,因?yàn)槠渲杏昧藴p號。5.什么是常量?什么是變量?字符變量與字符串常量有何不同?答:常量是在程序運(yùn)行的整個過程中保持其值不改變的量。變量是在程序的運(yùn)行過程中數(shù)值可變的數(shù)據(jù),往常用來記錄運(yùn)算中間結(jié)果或保存數(shù)據(jù)。字符變量中寄存一個字符,字符串常量中寄存一串字符。6.什么是強(qiáng)制種類變換?在什么情況下需要用到強(qiáng)制種類變換?答:強(qiáng)制種類的基本方式是指用以下方式顯式地進(jìn)行數(shù)據(jù)種類的變換:(種類)表達(dá)式一般地說,在賦值運(yùn)算符兩側(cè)的種類不一致的情況下,則需要進(jìn)行自動或強(qiáng)制種類變換。變量從占用內(nèi)存較少的短數(shù)據(jù)種類轉(zhuǎn)變成占用內(nèi)存較多的長數(shù)據(jù)種類時,能夠不做顯式的種類變換,Java會自動變換;而將變量從較長的數(shù)據(jù)種類變換成較短的數(shù)據(jù)種類時,則必須做強(qiáng)制種類變換。7.Java有哪些算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符和賦值運(yùn)算符?試列舉單目和三目運(yùn)算符。答:在Java中,按照運(yùn)算符功能來分,基本的運(yùn)算符有下面幾類:1.算術(shù)運(yùn)算符(+,-,*,/,%,++,--)2.關(guān)系運(yùn)算符(>,<,>=,<=,==,!=)3.布爾邏輯運(yùn)算符(!,&&,||,&,|)4.位運(yùn)算符(>>,<<,>>>,&,|,^,~)5.賦值運(yùn)算符(=,及其擴(kuò)展賦值運(yùn)算符如+=)6.條件運(yùn)算符(?:)7.其他(包括分量運(yùn)算符·,下標(biāo)運(yùn)算符[],實(shí)例運(yùn)算符instanceof,內(nèi)存分派運(yùn)算符new,強(qiáng)制種類變換運(yùn)算符(種類),方法調(diào)用運(yùn)算符( )等)其中,單目運(yùn)算符如-,!,而三目運(yùn)算符只有一個,即條件運(yùn)算符(?:)。8.編寫一個字符界面的JavaApplication程序,接受用戶輸入的一個浮點(diǎn)數(shù),把它的整數(shù)部分和小數(shù)部分分別輸出。答:見程序。/*原來的程序publicclassMyJavaClass{publicstaticvoidmain( ){.printIn("AmIwrong?");}.printIn("程序結(jié)束。");}*/publicclassEx3_1{publicstaticvoidmain(String[]args){"AmIwrong?");程序結(jié)束。");}}9.編寫一個字符界面的JavaApplication程序,接受用戶輸入的10個整數(shù),比較并輸出其中的最大值和最小值。答:見程序。import.*;publicclassEx3_9{publicstaticvoidmain(String[]args){intN=10;int[]a=newint[N];;publicclassEx3_10{publicstaticvoidmain(String[]args){charmin='\uffff';請輸入一串字符,以#結(jié)束:");while(true){charc='';try{c=(char)

}catch(IOExceptione){}if(c=='#')break;if(min>c)min=c;}"\n

其中最小的字符是

:"+min);}}11.結(jié)構(gòu)化程序設(shè)計有哪三種基本流程?分別對應(yīng)Java中的哪些語句?答:任何程序都能夠且只能由三種基本流程結(jié)構(gòu)組成,即次序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。次序結(jié)構(gòu)直接書寫,分支結(jié)構(gòu)用if及switch語句書寫,循環(huán)結(jié)構(gòu)用for、while及do語句來書寫。12.編寫一個Java程序,接受用戶輸入的一個l-12之間的整數(shù)(如果輸入的數(shù)據(jù)不知足這個條件,則要求用戶從頭輸入),利用switch語句輸出對應(yīng)月份的天數(shù)。答:見程序。import.*;publicclassEx3_12{publicstaticvoidmain(String[]args){try{BufferedReaderin=newBufferedReader(newInputStreamReader( ));inta=0;do{請輸一個1~12的整數(shù):");Strings=( );a=(s);}while(a<1||a>12);switch(a){case1:"一月");break;case2:"二月");break;case3:"三月");break;case4:"四月");break;case5:"五月");break;case6:"六月");break;case7:"七月");break;case8:"八月");break;case9:"九月");break;case10:"十月");break;case11:"十一月");break;case12:"十二月");break;default:break;}}catch(IOExceptione){}}}13.在一個循環(huán)中使用break,continue和return語句有什么不同的效果?答:break是結(jié)束循環(huán);continue是直接進(jìn)行下一次循環(huán);return則是結(jié)束整個函數(shù)的調(diào)用。14.編寫圖形界面下的JavaApplet程序,接受用戶輸入的兩個數(shù)據(jù)為上、下限,然后10個一行輸出上、下限之間的所有素數(shù)。import.*;import.*;importclassEx3_14extendsApplet{TextFieldin1=newTextField(10);TextFieldin2=newTextField(10);Buttonbtn=newButton("求兩個數(shù)之間的素數(shù)");TextAreaout=newTextArea(10,100);;publicclassEx3_15{publicstaticvoidmain(String[]args){try{BufferedReaderin=newBufferedReader(newInputStreamReader( ));請輸入一個正整數(shù):");Strings=( );inta=(s);a+"的所有素因子包括:");for(inti=2;i<=a;i++){if(a%i==0&&isPrime(i)){i);}}}catch(IOExceptione){}}publicstaticbooleanisPrime(inta);publicclassEx3_18{publicstaticvoidmain(String[]args){intN=100;int[]a=newint[N];for(inti=0;i<N;i++){a[i]=(int)( )*100);;publicclassEx3_19{publicstaticvoidmain(String[]args){intN=12;boolean[]a=newboolean[N];;publicclassEx3_20{publicstaticvoidmain(String[]args){intN=100;boolean[]a=newboolean[N+1];for(inti=0;i<=N;i++)a[i]=true;for(inti=2;i<=N;i++){for(intj=2*i;j<=N;j+=i){a[j]=false;}}for(inti=2;i<=N;i++){if(a[i])i);}}}第4章類、包和接口1.使用抽象和封裝有哪些利處?答:抽象能夠提供事物的本質(zhì)特點(diǎn)。封裝(Encapsulation)是這樣一種編程體制,它把代碼和其操作的數(shù)據(jù)捆綁在一同,進(jìn)而防備了外部對數(shù)據(jù)和代碼的擾亂和濫用,保證了數(shù)據(jù)和代碼的安全性。2.編寫一個Java程序片斷定義一個表示學(xué)生的類student,包括域“學(xué)號”、”班號”、“姓名”、“性別”、“年紀(jì)”;方法“獲得學(xué)號”、“獲得班號”、“獲得性別”、“獲得年紀(jì)”、“改正年紀(jì)”。classpublicclassexercise7{publicstaticvoidmain(Stringargs[]){Studentstu=newStudent("Student","200345",18,"2班");}}classStudent{privateStringstuNumber;privateStringstuClass;privateStringstuName;privateintstuAge;Student(Stringname,Stringnumber,intage,Stringcls){stuName=name;stuNumber=number;stuClass=cls;stuAge=age;}publicStringgetStuNumber( ){returnstuNumber;}publicStringgetStuClass( ){returnstuClass;}publicStringgetStuName( ){returnstuName;}publicintgetStuAge( ){returnstuAge;}publicvoidsetStuAge(intage){stuAge=age;}publicStringtoString( ){Stringinfor="學(xué)生姓名:"+getStuName( )+"\n"+學(xué)生年紀(jì):"+getStuAge( )+"\n"+學(xué)生班級:"+getStuClass( )+"\n"+學(xué)生學(xué)號:"+getStuNumber( )+"\n";returninfor;}}3.為student類定義結(jié)構(gòu)方法初始化所有的域,增加一個方法publicStringtoString( )把Sttldent

類對象的所有域信息組合成一個字符串。編寫

Application

程序查驗(yàn)新增的功能。答:見程序。

classEx4_3{publicstaticvoidmain(String[]args){Students=newStudent("09918076","

軟件專業(yè)班

","李明",true,18);s);}}classStudent{kg2[.pkg3

]];由于Java編譯器為每個類生成一個字節(jié)碼文件,且文件名與

public

的類名相同,因此同名的類有可能發(fā)生矛盾。這時就需要創(chuàng)立包。22.怎樣引用包中的某個類?怎樣引用整個包java.a(chǎn)pplet包都加載,則應(yīng)當(dāng)怎么做?答:為了能使用Java中已提供的類,我們需要用句的格式為:

?如果編寫JavaApplet程序時想把整個import語句來引入所需要的類。import

語importpackage1[.package2].(classname|*);其中package1[.package2]表示包的層次,與package語句相同,它對應(yīng)于文件目錄,classname則指明所要引入的類,如果要從一個包中引入多個類,則能夠用星號

(*)來代替。比如:import.*;import

如果編寫

JavaApplet

程序時想把整個

java

.a(chǎn)pplet

包都加載,能夠使用:import.*;23.CLASSPATH是有關(guān)什么的環(huán)境變量?它怎樣影響程序的運(yùn)行?怎樣設(shè)置和改正這個環(huán)境變量?答:在編譯和運(yùn)行程序中,經(jīng)常要用到多個包,怎樣指明這些包的根目錄呢?簡單地說,包層次的根目錄是由環(huán)境變量CLASSPATH來確定的。詳細(xì)操作有兩種方法:一是在java及javac命令行中,用-classpath選項(xiàng)來指明:如:java–classpathd:\tang\ch04;c:\java\classes;.二是設(shè)定classpath環(huán)境變量,用命令行設(shè)定環(huán)境變量,如:SetCLASSPATH=d:\tang\ch04;c:\java\classes;.在Windows中還能夠按第2章中的辦法設(shè)定環(huán)境變量。24.什么是接口?為什么要定義接口?接口與類有何異同?怎樣定義接口?使用什么重點(diǎn)字?答:Java中的接口(interface)在語法上有些相像于類(class),它定義了若于個抽象方法和常量,形成一個屬性會合,該屬性會合往常對應(yīng)了某一組功能,其主要作用是能夠幫助實(shí)現(xiàn)近似于類的多重繼承的功能。接口中只能有方法名及常數(shù)名,不能像類那樣有方法的實(shí)現(xiàn)體。定義接口,使用重點(diǎn)字interface。詳細(xì)方法是:[public]interface

接口名

[extends

父接口名列表

]{at( );}}}classRodent{publicvoideat( ){"Rodent");}}classMouseextendsRodent{publicvoideat( ){"Mouse");}}classGerbilextendsMouse{publicvoideat( ){"Gerbil");}}classHamsterextendsGerbil{publicvoideat( ){"Hamster");}}5.Java中怎樣消除對象?可否控制Java中垃圾回收的時間?答:Java中,無用的對象由系統(tǒng)自動進(jìn)行消除和內(nèi)存回收的過程,編程者能夠不關(guān)心怎樣回收以及何時回收對象。對象的回收是由Java虛構(gòu)機(jī)的垃圾回收線程來達(dá)成的。編程者不能完全控制垃圾回收的時間。6.內(nèi)部類與外部類的使用有何不同?答:在封裝它的類的內(nèi)部使用內(nèi)部類,與普通類的使用方式相同;在其他地方使用內(nèi)部類時,類名前要冠以其外部類的名字才能使用,在用new創(chuàng)立內(nèi)部類時,也要在new前面冠以對象變量。7.怎樣使用匿名類的對象?答:在類及其方法中,能夠定義一種匿名類,匿名類有以下幾個特點(diǎn):(1)這種類不(2)取名(3)字,而(4)直接用其父類的名(5)字或許它所實(shí)現(xiàn)的接口的名(6)字。(7)類的定義與創(chuàng)立該類的一個實(shí)例同(8)時進(jìn)行,(9)即類的定義前面有一個new。也不(10)使用重點(diǎn)詞class,同(11)時也帶上()表示創(chuàng)立對象。也就是說,(12)匿名(13)類的定義方法是:new類名或接口名(){}(14)類名(15)前面不(16)能有修飾符。(17)類中不(18)能定義結(jié)構(gòu)方法,(19)因?yàn)樗鼪]出名(20)字。在結(jié)構(gòu)對象時,(21)直接使用父類的結(jié)構(gòu)方法。如果實(shí)現(xiàn)接口,(22)則接口名(23)后的圓括號中不(24)能帶參數(shù)。8.方法中定義的內(nèi)部類是否能夠存取方法中的局部變量?答:方法中的內(nèi)部類,不能接見該方法的局部變量,除非是final的局部變量或final的參變量。第6章異樣辦理1.異樣能夠分紅幾類?答:Java的異樣類都是的子類。它派生了兩個子類:Exception和Error。其中Error類由系統(tǒng)保存,而Exception類則供給用程序使用。2.用main( )創(chuàng)立一個類,令其拋出try塊內(nèi)的Exception類的一個對象。為Exception的構(gòu)建器賦予一個字串參數(shù)。在catch從句內(nèi)捕獲異樣,并打印出字串參數(shù)。增添一個finally從句,并打印一條消息。publicclassEx6_2{publicstaticvoidmain(String[]args){try{inti=("");}catch(Exceptione){e);}finally{"finished");}}};答:見程序。3.用extends

重點(diǎn)字創(chuàng)立自己的異樣類。為這個類寫一個建立器,令其采用

String

參數(shù),并隨同

String

句柄把它保存到對象內(nèi)。寫一個方法,令其打印出保存下來的

String

。創(chuàng)立一個try-catch

從句,練習(xí)實(shí)際操作新異樣。答:見程序。{

publicclassEx6_3publicstaticvoidmain(String[]args){try{thrownewEx63Exception("

測試");}catch(Ex63Exceptione){( );}finally{"finished");}}};classEx63ExceptionextendsException{Stringmsg;publicEx63Exception(Stringmsg){super(msg);=msg;}publicvoidshow( ){msg);}};4.寫一個類,并在一個方法拋出一個異樣。試著在沒有異樣規(guī)范的前提下編譯它,察看編譯器會報告什么。接著增添適合的異樣規(guī)范。在一個try-catch從句中嘗試自己的類以及它的異樣。答:見程序。publicclassEx6_4{publicstaticvoidmain(String[]args){charc;try{c=(char)};import.*;importclassEx7_7extendsApplet{TextFieldin1=newTextField(10);TextFieldin2=newTextField(10);Buttonbtn=newButton("Labelout=newLabel("

刪除字符串的指定字符用于顯示結(jié)果的標(biāo)簽");

");publicvoidmainint( ){setLayout(newFlowLayout( ));add(in1);add(in2);add(btn);add(out);(newBtnActionAdapter( ));}classBtnActionAdapterimplementsActionListener{publicvoidactionPerformed(ActionEvente){Strings1=( );Strings2=( );charc2=(0);StringBuffersb=newStringBuffer( );for(inti=0;i<( );i++){charc1=(i);if(c1!=c2){(c1);}}("結(jié)果為"+sb);}}}8.編程判斷一個字符串是否是回文。答:import.*;publicclassEx7_8{publicstaticvoidmain(String[]args){try{BufferedReaderin=newBufferedReader(newInputStreamReader( ));"請輸入一串字符:");Strings=( );booleanflg=true;intlen=( );for(inti=0;i<len/2;i++){if((i)!=(len-1-i)){flg=false;break;}}flg?"是回文":"不是回文");}catch(IOExceptione){}}}9.String類的concat( )方法與StringBuffer類的append( )方法都能夠連結(jié)兩個字符串,它們之間有何不同?答:String的concat( )方法不改變原字符串本身,而是產(chǎn)生一個新的字符串。StringBuffer的append( )方法例改變其中的字符串內(nèi)容,而不產(chǎn)生一個新的對象。10.什么是遞歸方法?遞歸方法有哪兩個基本要素?編寫一個遞歸途序求一個一維數(shù)組所有元素的乘積。答:簡單地說,遞歸方法就是直接或間接調(diào)用自己的方法。遞歸方法有兩個要素:一個是求得范圍縮小的同性責(zé)問題的結(jié)果;另一是利用這個已獲得的結(jié)果和一個簡單的操作求得問題的最后解答。classEx7_10{publicstaticdoublemulti(double[]a){returnmul(a,0);;classEx7_23{publicstaticvoidmain(String[]args){Framefrm=newFrame("Julia");(300,300);(true);Ex7_23p=newEx7_23(frm);( );}privateFramefrm;privateGraphicsgraphics;privateintwidth;privateintheight;publicEx7_23(Framefrm){graphics=( );width=( ).width;height=( ).height;}publicvoiddrawJulia( ){;classEx7_25{publicstaticvoidmain(String[]args){int[]a=newint[10];for(inti=0;i<;i++){"請輸入第"+(i+1)+"a[i]=readOneIntger( );

個數(shù):");}"互換前為print(a);

:");for(inti=0;i<2;i++){intt;t=a[-i-1];a[-i-1]=a[i];a[i]=t;}互換后為:");print(a);}staticvoidprint(int[]a){for(inti=0;i<;i++)a[i]+"");}staticintreadOneIntger( ){intn=0;try{BufferedReaderin=newBufferedReader(newInputStreamReader( ));Strings=( );n=(s);}catch(IOExceptione){}returnn;}}26.有一個n*m的矩陣,編寫程序,找出其中最大的那個元素所在的行和列,并輸出其值及行號和列號。classEx7_26{publicstaticvoidmain(String[]args){intn=5;intm=6;int[][]a=newint[n][m];for(inti=0;i<n;i++)for(intj=0;j<m;j++)a[i][j]=rnd(100);for(inti=0;i<n;i++){for(intj=0;j<m;j++)"\t"+a[i][j]);"\n");}intmax=a[0][0];intp=0;intq=0;for(inti=0;i<n;i++){for(intj=0;j<m;j++){if(max<a[i][j]){max=a[i][j];p=i;q=j;}}}"第"+(p+1)+"行"+(q+1)+"列的值最大:"+max);}publicstaticintrnd(intmax){return(int)( )*max)+1;}}第8章Java的多線程1.程序中怎樣創(chuàng)立線程?答:創(chuàng)立線程對象有兩種方法,一是經(jīng)過繼承Thread類,一是向Thread類傳達(dá)一個Runnable對象。2.程序中怎樣控制線程?答:啟動一個線程:調(diào)用start( )方法。終止或暫停一個線程:一般采取給線程設(shè)定一個標(biāo)記變量的方法,來決定線程是否應(yīng)當(dāng)終止或暫停。設(shè)定線程的優(yōu)先級:使用

Thread對象的

setPriority(intpriority)

方法。3.多線程之間怎樣進(jìn)行同步?答:能夠經(jīng)過使用重點(diǎn)字

synchronized

,使用對象的

wait( )

、notify( )

方法來實(shí)現(xiàn)線程間的同步。4.編寫一個程序,用一個線程顯示時間,一個線程用來計算(如判斷一個大數(shù)是否是質(zhì)數(shù)),當(dāng)質(zhì)數(shù)計算完成后,停止時間的顯示。答:見程序。importclassEx8_4{publicstaticvoidmain(Stringargs[]){newEx8_4( ).test( );}publicvoidtest( ){MyTaskmytask=newMyTask( );Threadthread=newThread(mytask);( );newThread(newClock( )).start( );}booleanfinished=false;classMyTaskimplementsRunnable{publicvoidrun( ){for(inti=0;i<10;i++){doOnce( );( );}finished=true;}publicvoiddoOnce( ){Randomrnd=newRandom( );BigIntegerprime=(800,rnd);隨機(jī)數(shù)是:"+( ));booleanbo=(10000);;publicclassEx9_5{publicstaticvoidmain(String[]args){Strings="";doublec=0;doubled=0;try{BufferedReaderin=newBufferedReader(newInputStreamReader( ));請輸入一個數(shù):");s=( );c=(s);請輸入另一個數(shù):");s=( );d=(s);這兩個數(shù)的積為:"+(c*d));}catch(IOExceptione){}}}6.編寫一個程序,從命令行上接收兩個文件名,比較兩個文件的長度及內(nèi)容。答:參見程序。import.*;publicclassEx9_6{publicstaticvoidmain(String[]args){try{BufferedReaderin=newBufferedReader(newInputStreamReader( ));請輸入一個文件名:");Stringname1=( );請輸入另一個文件名:");Stringname2=( );Filefile1=newFile(name1);Filefile2=newFile(name2);longlen1=( );longlen2=( );if(len1!=len2){這兩個文件的長度不同樣");return;}Stringtext1=readFileToEnd(file1);Stringtext2=readFileToEnd(file2);text1);text2);if((text2)){這兩個文件的內(nèi)容相同");}else{這兩個文件的內(nèi)容不同樣");}}catch(IOExceptione){( );}}publicstaticStringreadFileToEnd(Filefile){StringBuffertext=newStringBuffer( );try{BufferedReaderin=newBufferedReader(newFileReader(file));Strings=( );while(s!=null){(s+"\n");s=( );}( );}catch(IOExceptione2){( );}return( );}}7.編寫一個程序,能將一個Java源程序中的空行及說明去掉。答:參見程序。import.*;publicclassEx9_7{publicstaticvoidmain(String[]args){Stringinfname="";Stringoutfname="";if(>=1)infname=args[0];if(>=2)outfname=args[1];try{Filefin=newFile(infname);Filefout=newFile(outfname);BufferedReaderin=newBufferedReader(newFileReader(fin));PrintWriterout=newPrintWriter(newFileWriter(fout));intcnt=0;( );}catch(FileNotFoundExceptione1){"Filenotfound!");}catch(IOExceptione2){( );}}staticStringdeleteComments(Strings);import.*;publicclassEx10_10extendsApplet{publicvoidpaint(Graphicsg){doublew=getSize( ).width/2;doubleh=getSize( ).height/2;( );for(doubleth=0;th<h;th+={doubler=th;doublex=r*(th)+w;doubley=r*(th)+h;((int)x,(int)y,(int)x,(int)y);}}}11.編寫Applet程序,用paint( )方法顯示一行字符串,Applet包含兩個按鈕“放大”和“縮小”,當(dāng)用戶單擊“放大”時顯示的字符串字體放大一號,單擊“縮小”時顯示的字符串字體縮小一號。答:見程序。import.*;import.*;importclassEx10_11extendsApplet{Buttonbtn1=newButton("放大");Buttonbtn2=newButton("縮小");publicvoidinit( ){setLayout(newFlowLayout( ));add(btn1);add(btn2);(newBtnActionAdapter( ));(newBtnActionAdapter( ));}privateintfontSize=12;publicvoidpaint(Graphicsg){doublew=getSize( ).width/2;doubleh=getSize( ).height/2;( );(newFont("宋體",,fontSize));("文字的大小"+fontSize,10,15);}classBtnActionAdapterimplementsActionListener{publicvoidactionPerformed(ActionEvente){if(( )==btn1)fontSize+=2;if(( )==btn2)fontSize-=2;if(fontSize<=5)fontSize=5;}}}12.編寫Applet程序,包含三個標(biāo)簽,其背景分別為紅、黃、藍(lán)三色。答:見程序。import.*;import.*;importclassEx10_12extendsApplet{Labellb1=newLabel("Labellb2=newLabel("Labellb3=newLabel("

紅");黃");藍(lán)");publicvoidinit( ){setLayout(newFlowLayout( ));add(lb1);add(lb2);add(lb3);( );( );( );}}13.使用Checkbox標(biāo)志按鈕的背風(fēng)景,使用CheckboxGroup標(biāo)志三種字體風(fēng)格,使用Choice選擇字號,使用List選擇字體名稱,由用戶確定按鈕的背風(fēng)景和前景字符的顯示效果。答:見程序。import.*;import.*;importclassEx10_13extendsAppletimplementsActionListener{CheckboxchkBack=newCheckbox("背景為黃色");CheckboxGroupcbgStyle=newCheckboxGroup( );ChoicechcSize=newChoice( );ListlstName=newList(4,false);ButtonbtnOk=newButton("

確定

");publicvoidinit( ){add(chkBack);add(newCheckbox("慣例",cbgStyle,false));add(newCheckbox("粗體",cbgStyle,true));add(newCheckbox("斜體",cbgStyle,false));("9");("11");("15");add(chcSize);("宋體");("楷體");("黑體");add(lstName);add(btnOk);(this);}publicvoidactionPerformed(ActionEvente){booleanback=( );intfontStyle=;CheckboxchkStyle=( );if(( )=="粗體")fontStyle=;if(( )=="斜體")fontStyle=;intfontSize=(( ));StringfontName=( );if(fontName==null)fontName="

宋體";Fontfont=newFont(fontName,fontStyle,fontSize);if(back)( );(font);}}14.使用轉(zhuǎn)動條:編寫一個Applet包含一個轉(zhuǎn)動條,在Applet中繪制一個圓,用轉(zhuǎn)動條滑塊顯示的數(shù)字表示該圓的直徑,當(dāng)用戶拖動滑塊時,圓的大小隨之改變。答:見程序。import.*;import.*;importclassEx10_14extendsApplet{Scrollbarscrl=newScrollbar;publicvoidinit( ){idth-20,10);(getSize( ).width);(rad*2);(newMyListener( ));setLayout(newBorderLayout( ));add(scrl,);}privateintrad=12;publicvoidpaint(Graphicsg){intw=getSize( ).width/2;inth=getSize( ).height/2;( );(w-rad,h-rad,rad*2,rad*2);}classMyListenerimplementsAdjustmentListener{publicvoidadjustmentValueChanged(AdjustmentEvente){rad=( )/2;if(rad<=5)rad=5;}}}15.編寫一個Applet響應(yīng)鼠標(biāo)事件,用戶能夠經(jīng)過拖動鼠標(biāo)在Applet中畫出矩形,并在狀態(tài)條顯示鼠標(biāo)目前的地點(diǎn)。使用一個Vector對象保存用戶所畫過的每個矩形并顯示、響應(yīng)鍵盤事件,當(dāng)用戶擊鍵q時消除屏幕上所有的矩形。答:見程序。import.*;import.*;import.*;publicclassEx10_15extendsApplet{publicvoidinit( ){(newMyMouseListener( ));(newMyKeyListener( ));}privateVectorrects=newVector( );privatePointdown=null;publicvoidpaint(Graphicsg){( );for(inti=( )-1;i>=0;i--){Rectangler=(Rectangle)(i);((int)( ),(int)( ),(int)( ),(int)( ));}("有"+( )+"個矩形",10,15);"R");}classMyMouseListenerextendsMouseAdapter{publicvoidmousePressed(MouseEvente){down=( );}publicvoidmouseReleased(MouseEvente){Pointup=( );if(down==null||(down)){down=null;return;}else{(newRectangle((int)( ),(int)( ),(int)( )( )),(int)( )( ))));down=null;}"M");}}classMyKeyListenerextendsKeyAdapter{publicvoidkeyTyped(KeyEvente){if(( )=='q'){rects=newVector( );}"K");}}}16.編寫Applet程序?qū)崿F(xiàn)一個計算器,包括十個數(shù)字(0~9)按鈕和四個運(yùn)算符(加、減、乘、除)按鈕,以及等號和清空兩個協(xié)助按鈕,還有一個顯示輸入輸出的文本框。試用BorderLayout和GridLayout實(shí)現(xiàn)。import.*;import.*;import.*;publicclassEx10_16extendsAppletimplementsActionListener{doubled0,d1,d2,result;booleanflag=true;Strings,oper;TextFieldtf1;Panelp=newPanel( );publicvoidinit( ){inti;result=0;s=newString( );oper=newString("+");tf1=newTextField("",15);Button[]b=newButton[21];for(i=1;i<21;i++){b[i]=newButton( );b[i].setFont(newFont("仿宋",0,16));}b[1].setLabel("退格");b[2].setLabel("CE");b[3].setLabel("C");b[4].setLabel("/");b[5].setLabel("7");b[6].setLabel("8");b[7].setLabel("9");b[8].setLabel("*");b[9].setLabel("4");b[10].setLabel("5");b[11].setLabel("6");b[12].setLabel("-");b[13].setLabel("1");b[14].setLabel("2");b[15].setLabel("3");b[16].setLabel("+");b[17].setLabel("0");b[18].setLabel("+/-");b[19].setLabel(".");b[20].setLabel("=");(newGridLayout(5,4));(newColor(80,30,100));for(i=1;i<21;i++){(b[i]);b[i].addActionListener(this);b[i].setBackground(newColor(20,130,180));b[i].setForeground;}for(i=1;i<4;i++){b[i].setBackground(newColor(120,180,170));b[i].setForeground;}for(i=1;i<=4;i++){b[i*4].setBackground(newColor(120,180,170));b[i*4].setForeground;}b[20].setBackground;setLayout(newBorderLayout( ));add("North",tf1);add("Center",p);}publicvoidactionPerformed(ActionEvente){Stringi1=( );s=( );if(s=="0"|s=="1"|s=="2"|s=="3"|s=="4"|s=="5"|s=="6"|s=="7"|s=="8"|s=="9"|s=="."){if(flag)(i1+s);else{(s);flag=true;}}elseif(s=="+"|s=="-"|s=="*"|s=="/"){result=(i1);flag=false;oper=s;}elseif(s=="="){d0=(i1);if(oper=="+")result+=d0;if(oper=="-")result-=d0;if(oper=="*")result*=d0;if(oper=="/")result/=d0;(result));flag=false;}elseif(s=="CE"){("");flag=false;}elseif(s=="C"){result=0;("");flag=false;}elseif(s=="退格"){Stringss=( );inti=( );ss=(0,i-1);(ss);}elseif(s=="+/-"){d2=-1*( ));(d2));}}}答:見程序。17.Panel與Applet有何關(guān)系?Panel在Java程序里往常起到什么作用?答:Panel類是Applet類的父類。Panel在Java程序里往常用作容器,用于將其他對象進(jìn)行布局。18.為什么說Frame是非常重要的容器?為什么使用Frame的程序往常要實(shí)現(xiàn)WindowListener?封閉Frame有哪些方法?答:Frame是能夠獨(dú)立存在的頂層容器,相當(dāng)于我們在Windows中看見的獨(dú)立窗口,所以它是相當(dāng)重要的。由于Frame類自己沒有自動封閉的功能,所過去常要實(shí)現(xiàn)WindowListener來辦理封閉事件。常用的封閉窗口的方法有三個:一個是設(shè)置一個按鈕,當(dāng)用戶點(diǎn)擊按鈕時封閉窗口;第二個方法是對WINDOWS_CLOSING事件做出響應(yīng),封閉窗口;第三個方法是使用菜單命令。前一種方法需要特意的按鈕,爾后一種方法實(shí)現(xiàn)WindowListener接口所需的代碼較多,不論使用何種方法,都需要用到封閉Frame的dispose( )方法。19.練習(xí)使用列表框及組合框。答:略。(可參見第13題)。20.Swing組件與AWT件有何區(qū)別。答:Swing是第二代GUI開發(fā)工具集,與AWT是第一代GUI開發(fā)工具集。與AWT相比,Swing具有更好的可移植性,Swing提供了更完整的組件,增加了很多功能。別的,Swing引入了很多新的特性和能力,如:所有的組件都很小巧的(輕量級的),支持雙緩存,支持拖放,支持文本、圖形、工具提示(Tooltip),新的布局管理,更多的組件等等。21.繪出以下函數(shù)的曲線:y=5*sin(x)+cos(3*x)y=sin(x)+sin(6*x)/10答:見程序。import.*;import.*;publicclassEx10_21extendsApplet{publicvoidpaint(Graphicsg){doublew=getSize( ).width;doubleh=getSize( ).height;( );for(doublex=0;x<w/10;x+={doubley=5*(x)+(3*x);doublexx=x*10;doubleyy=y*h/22+h/4;((int)xx,(int)yy,(int)xx,(int)yy);}( );for(doublex=0;x<w/10;x+={doubley=(x)+(6*x)/10;doublexx=x*10;doubleyy=y*h/5+h*3/4;((int)xx,(int)yy,(int)xx,(int)yy);}}}22.繪出以下函數(shù)的曲線:r=cos(2θ)r=cos(3θ)答:見程序。import.*;import.*;publicclassEx10_22extendsApplet{publicvoidpaint(Graphicsg){doublew=getSize( ).width/2;doubleh=getSize( ).height/2;( );for(doubleth=0;th<10;th+={doubler=(2*th)*h;doublex=r*(th)+w/2;doubley=r*(th)+h;((int)x,(int)y,(int)x,(int)y);}( );for(doubleth=0;th<10;th+={doubler=(3*th)*h;doublex=r*(th)+w*3/2;doubley=r*(th)+h;((int)x,(int)y,(int)x,(int)y);}}}23.根據(jù)本章的所學(xué)習(xí)的內(nèi)容用JavaApplication編寫一個模擬的文本編寫器。給文本編寫器增加設(shè)字體字號的功能。答:見程序。import.*;import.*;import.*;classTextEditorFrameextendsJFrame{Filefile=null;Colorcolor=;TextEditorFrame( ){initTextPane( );initMenu( );initAboutDialog( );initToolBar( );}voidinitTextPane( ){dd(newJScrollPane(text));}JTextPanetext=newJTextPane( );."),newJMenuItem("Save..."),newJMenuItem("Exit")},{newJMenuItem("Copy"),newJMenuItem("Cut"),newJMenuItem("Paste"),newJMenuItem("Color..."),newJMenuItem("Font...")},{newJMenuItem("About")}};voidinitMenu( ){ength;j++){menus[i].add(menuitems[i][j]);menuitems[i][j].addActionListener(action);}}(menubar);}ActionListeneraction=newActionListener( ){.")){if(file!=null)(file);intreturnVal=(;if(returnVal=={file=( );openFile( );}}elseif(("Save...")){if(file!=null)(file);intreturnVal=(;if(returnVal=={file=( );saveFile( );}}elseif(("Exit")){(0);}elseif(("Cut"

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論