Java2實用教程課后習(xí)題參考答案(第三版)_第1頁
Java2實用教程課后習(xí)題參考答案(第三版)_第2頁
Java2實用教程課后習(xí)題參考答案(第三版)_第3頁
Java2實用教程課后習(xí)題參考答案(第三版)_第4頁
Java2實用教程課后習(xí)題參考答案(第三版)_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Java2 實用教程(第三版)課后習(xí)題參考答案第 1 章 Java 入門1. 開發(fā)與運 行 Jav a 程序需要經(jīng)過哪些主要步 驟和過程?答 :( 1)編寫 Java 源文件:使用文本編輯器(Edit 或記事本),拓展名為.java(2)編譯 Java 源文件:使用 Java 編譯器(javac.exe)。得 到 字 節(jié) 碼 文 件*.class(3)運行 Java 程序:Java 應(yīng)用程序使用 Java 解釋器(java.exe)執(zhí)行字節(jié)碼文件; Java 小應(yīng)用程序使用支持 Java 標(biāo)準(zhǔn)的瀏覽器來執(zhí)行。2. 怎樣區(qū)分應(yīng)用程序和小應(yīng) 用程序?應(yīng)用程序的主類或小應(yīng)用程序的主類必 須 用 pu

2、bli c 修飾嗎? 答: 應(yīng)用程序必須有 main 方法,這個方法是程序執(zhí)行的入口。小應(yīng)用程序沒有 main 方法。應(yīng)用程序的主類不一定用 public 修飾;小應(yīng)用程序的主類必須用 public 修飾。3. Jav a 程序是由什么組成的? 一個程序中必須要 有 publi c 類嗎?Jav a 源文件的命名規(guī)則是怎樣的 ? 答: Java 程序由類組成。應(yīng)用程序可以沒有 public 類;小應(yīng)用程序一定有一個類是 public 類 ( 主 類 )。應(yīng)用程序:如果只有一個類,源文件名與該類的類名相同,拓展名為.java; 有多個類時,如果有 public 類(最多一個),源文件名與 pub

3、lic 類的類 名相同,拓展名是.java;沒有 public 類,源文件名與任何一個類的類名 相同即可,拓展名為.java。小應(yīng)用程序:源文件名與主類的類名相同,拓展名是.java。4. 在運行小程序 的 HTM L 文件中可以使 用 codebas e 屬性指定小程序的字節(jié)碼 所駐留的目錄。如果不使 用 codebas e 屬性,小程序的字節(jié)碼文 件必須和運行它 的 HTM L 文件在同一目錄中。編寫 一個小程序并將小程 序的字節(jié)碼存放在某個 目錄中,比 如 C:5000 ;把運行該小程序 的 HTM L 文件(注意其中 的 codebas e 屬性): 存放在另一個目錄中。答:以書中小應(yīng)

4、用程序為例進(jìn)行說明:編寫 Java 小應(yīng)用程序源代碼 import java.applet.*; import java.awt.*;public class Boy extends Appletpublic void paint(Graphics g)g.setColor(Color.red); g.drawString(我一邊喝著咖啡,一邊學(xué) Java 呢,5,30); g.setColor(Color.blue); g.drawString(我學(xué)得很認(rèn)真,10,50);將上述代碼命名為 Boy.java 并進(jìn)行編譯得到 Boy.class 字節(jié)碼文件;將得到的字節(jié)碼文件存放在C:5000

5、 文件夾下;編寫小應(yīng)用程序的 HTML 源文件: 將上述編寫好的代碼命名為 Boy.html;并將此文件存放在 C:5000 文件夾以外的任意一個文件夾 中(如 C:1000);運行 Boy.html。第 2 章 標(biāo)識符、關(guān)鍵字和數(shù)據(jù)類型1. 什么叫標(biāo)識符?標(biāo)識符的 規(guī)則是什么? 答:用來標(biāo)識類名、變量名、方法名、類型名、數(shù)組名、文件名的有效字符序列。由字母、下劃線、美元符號和數(shù)字組成,并且第一個字符不能是數(shù)字字符,而且關(guān)鍵字不能作為標(biāo) 識符。2. 什么叫關(guān)鍵字?請說 出 5 個關(guān)鍵字。答:Java 語言中已經(jīng)被賦予特定意義的一些單詞。class break public return sta

6、tic extends 等。3. Jav a 的基本數(shù)據(jù)類型都是什 么?答:boolean(邏輯型)char(字符型)float、double(浮點型) byte、short、int、long(整型)。4. 下列哪些語句是錯誤的 :int x = 8; byte b = 127; b = x;答:b=x 語句錯誤;原因是高級別的變量賦值給低級別的變量時,一定要用顯式轉(zhuǎn)換即 b=(byte)x; 。5. 下列程序的輸出結(jié)果是什 么?public class Epublic static void main(Strin g args)long a=1,2,3,4 ;long b=100,200 ,

7、300,400,500;b=a;System.ou t.println(數(shù) 組 b 的長度:+b.length ); System.ou t.println(b0=+b0) ;答: 數(shù)組 b 的長度:4 b0=16. 上機(jī)運行下列程序,注意 觀察輸出結(jié)果。public class Epublic static void main(Strin g args)for(int i=20302;i 20322;i+)System.ou t.println(char)i);答: 低住佐佑佒體佔何佖佗佘余佚佛作佝佞佟你佡7. rintln(“你好”);可輸出字符串,也可以使 用 System.out. p

8、rintln( )輸出變量或表 達(dá) 式 的 值 , 只 需 使 用 并 置 符 號 “ + ” 將 變 量 、 表 達(dá) 式 或 一 個 常 數(shù) 值 與 一 個 字 符 串 并 置 即 可 , 如 : System.ou t.println(“ ”+x);System.out. println(“:”+123+“大于”+122) ;等。上機(jī)調(diào)試下列 程序,注意觀察結(jié)果, 特別注 意 System.out. print( )和 rintln( )的區(qū)別。public class OutputDatapublic static void main(Strin g args) 答: 234468int

9、 x=234,y=432 ; System.ou t.println(x+(2*x); System.ou t.print(我輸出結(jié)果后不回車); System.ou t.println(我輸出結(jié)果后自動回車到下 一行); System.ou t.println(x+y= +(x+y); System.ou t.println( +x+y+=234 432);我輸出結(jié)果后不回車我輸出結(jié)果后自動回車到下一行x+y= 666234432=2344328. 編寫一 個 Jav a 應(yīng)用程序,輸出全部的希臘 字母。 答:public class XLWordspublic static void ma

10、in(String args)for(int i=913;i930;i+)System.out.print(char)i+ );for(int j=931;j938;j+)System.out.print(char)j+ );for(int k=945;k962;k+)System.out.print(char)k+ );for(int t=963;tA)elsey=愛;z= 情;y=我;z= 她; System.out.println( +x+y+ z) ;答:你愛她2. 下列程序的輸出結(jié)果是什 么?public class E3public static void main(Strin g

11、 args)char c=0;for(int i=1;i=4;i+ +)switch(i)case 1:c=b; System.ou t.print(c); case 2:c=e; System.ou t.print(c); break;case 3:c=p; System.ou t.print(c); default: System.ou t.print(!);答:beep!3. 編寫應(yīng)用程序, 求 1!+2!+10!。 答:class Factpublic static void main(String args)int fact,sum=0;for(int i=1;i=10;i+)fac

12、t=1;for(int j=1;j=i;j+)fact*=j;sum+=fact;System.out.println(1 到 10 的階乘之和是:+sum);4. 編寫一個應(yīng)用程序, 求 10 0 以內(nèi)的全部素數(shù)。 答:class Primespublic static void main(String args)int w=1;for(int i=2;i=100;i+)for(int j=2;ji;j+)w=i%j; if(w=0) break;if(w!=0) System.out.println(i+是素數(shù));5. 分別 用 dowhil e 和 fo r 循環(huán)計 算 1+1/2!+1

13、/3! +1/4!+的 前 2 0 項和。 答: for 循環(huán)class Sumpublic static void main(String args)int fact;double sum=0;for(int i=1;i=20;i+)fact=1;for(int j=1;j=i;j+) fact*=j; sum+=1.0/fact;System.out.println(sum);dowhile 循環(huán)class Sumpublic static void main(String args)int i=1; int fact; double sum=0; dofact=1; int j=0; w

14、hile(+j=i)fact*=j;sum+=1.0/fact;while(+i=20); System.out.println(sum);6. 一個數(shù)如果恰好等于它的 因子之和,這個數(shù)就稱為“完數(shù)”。編寫應(yīng)用程序, 求 100 0 之內(nèi)的所有完數(shù) 。 答:class Wanshupublic static void main(String args)int x,i,sum;for(x=1;x=1000;x+)sum=0;for(i=1;ix;i+)if(x%i=0)sum+=i;if(x=sum) System.out.println(x+是完數(shù));7. 編寫應(yīng)用程序,分別使 用 whil

15、e 和 fo r 循環(huán)計 算 8+88+888+ 前 1 0 項之和。 答: for 循環(huán)class TheSumpublic static void main(String args)long sum=0,data=8;for(int i=1;i=10;i+)sum=sum+data;data=data*10+8;System.out.println(sum);while 循環(huán)class TheSumpublic static void main(String args)long sum=0,data=8,i=0;while(+i=10)sum=sum+data;data=data*10+8

16、;System.out.println(sum);8. 編寫應(yīng)用程序,輸出滿 足 1+2+3+n888 8 的最大正整 數(shù) n。 答:class Maxnpublic static void main(String args)int k=1,sum=0;while(sum+=k)8888)k+;k-; System.out.println(最大能取到:+k);第 4 章 類、對象和接口1. 類中的實例變量在什么時 候會被分配內(nèi)存空間?答: 當(dāng)該類創(chuàng)建對象之后,實例變量才會被分配相應(yīng)的內(nèi)存空間。2. 什么叫方法的重載?構(gòu)造 方法可以重載嗎? 答:一個類中可以有多個方法具有相同的名字,但這些方法的

17、參數(shù)必須不同,即或者是參數(shù)的個數(shù)不同,或者是參數(shù)的類型不同(方法的重載體現(xiàn)了多態(tài)性,即功能多態(tài)性)。構(gòu)造方法可以重載。3. 類中的實例方法可以操作 類變量(stati c 變量)嗎?類方法(stati c 方法)可以操作實例變量嗎? 答:類中的實例方法可以操作類變量。類方法不可以操作實例變量4. 類中的實例方法可以用類 名直接調(diào)用嗎? 答: 類中的實例方法不可以用類名直接調(diào)用。5. 舉例說 明 protecte d 方法和友好方法的區(qū)別。答: 當(dāng)子類與父類不在同一個包中時,子類可以繼承父類的 protected 方法;而友好方法此時則不能被子 類繼承。6. 舉例說明類變量和實例變 量的區(qū)別。答

18、:書寫: 定義成員變量時,類變量有 static 修飾;實例變量沒有 static 修飾。 例:class Aint x; /實例變量static int y;/類變量內(nèi)存: 不創(chuàng)建對象,類的實例變量不會被分配內(nèi)存空間;類變量被分配相應(yīng)的內(nèi)存空間。 不同對象的實例變量被分配不同的內(nèi)存空間;不同對象的類變量被分配相同的內(nèi)存空間。任何一個對象改變類變量,其他對象的相應(yīng)類變量也發(fā)生相應(yīng)變化。 一個對象的實例變量發(fā)生改變,不影響其他對象的相應(yīng)實例變量。例:執(zhí)行語句:A1.x=10; A1.y=20;這時 A2.x 的值也是 10;而 A2.y 的值保持原來的初值。使用: 類變量可以被類方法操作;而實例

19、變量不能被類方法操作。例:class Aint x;static int y;static void func()b=10;/合法a=20;/非法類變量可以通過類名訪問;實例變量不能通過類名訪問。 例:class Aint x;static int y;class Bpublic void func();A.x=10;/非法 A.y=20;/合法7. 子類將繼承 父類的哪些成員變量 和方法?子類在什么 情況下隱藏父類的 成員變量和方法?在 子類中是 否允許有一個方法和父 類的方法名字相同,而類型不同?答:子類和父類在同一個包中時,子類可以繼承父類的除 private 屬性的所有方法和成員變量,

20、當(dāng)子類與父類不在同一個包中時,子類只能繼承父類的 protected 和 public 屬性的成員變量和方法。子類中定義的成員變量和父類中的成員變量同名時,子類就隱藏了繼承的成員變量;子類中定義一個 方法,并且這個方法的名字、返回類型、參數(shù)個數(shù)和類型與從父類繼承的方法完全相同,子類就隱藏 從父類繼承來的方法(方法的重寫)。在子類中允許有一個方法和父類的方法名字相同而類型不同。8. 父類 的 fina l 方法可以被子類重寫嗎? 答: 父類的 final 方法不能被子類重寫。9. 什么類中可以 有 abstrac t 方法?答: abstract 類中可以有 abstract 方法。10.什么叫

21、對象的上轉(zhuǎn)型對象?答: B 類是 A 類的子類或間接子類,當(dāng)用子類 B 創(chuàng)建一個對象 b 并把這個對象的引用放到 A 類的對象 a 中時 , 稱 A 類對象 a 是子類對象 b 的上轉(zhuǎn)型對象。11.什么叫接口的回調(diào)?答: 可以把實現(xiàn)某一接口的類創(chuàng)建的對象的引用賦給該接口聲明的接口變量中。12.下列程序有什么錯誤?public class Takecareint a=90;static float b=10.98f;public static void main(Strin g args)float c=a+b; System.ou t.println(c=+c);答: 語句 float c=a

22、+b;錯誤。原因是類方法 main 操作了實例變量 a。13. 請寫出下列程序的輸出結(jié)果 。class Apublic int f(int x)return x+1;class B extends Apublic int f(int x)return x*x;public class Epublic static void main(Strin g args) 答: 100A a=new B(); int m=a.f(10); System.ou t.println(m);14. 請寫出下列程序的輸出結(jié)果 。class Aint x;public void setX(int x)this.x=

23、x;int getX()return x;class Bpublic void f(A a)a.setX(100 );public class Epublic static void main(Strin g args) 答: 8100A a=new A(); a.setX(8); System.ou t.println(a.getX(); B b=new B();b.f(a); System.ou t.println(a.getX();15.使用接口有哪些注意事項? 模仿例 子 4.27,編寫一個類實現(xiàn)兩個接 口的程序。 答:一個類使用接口時,要有 implements 關(guān)鍵字,當(dāng)一個類使用

24、多個接口時,接口名要用逗號“,”隔開 ;使用接口的類除 abstract 類外,必須實現(xiàn)接口的所有方法,并且實現(xiàn)接口的方法時,方法名字、返回類型、參數(shù)個數(shù)及類型必須與接口中的完全一致;類在實現(xiàn)接口時,方法體一定要用 public 修飾,如 果接口方法的返回類型不是 void 型,在類中實現(xiàn)接口時,方法體至少有一個 return 語句。interface 表面積double allArea(double r);interface 體積double volu(double r);class Sph implements 表面積,體積double PI=3.14159;public double a

25、llArea(double r)return 4*PI*r*r;public double volu(double r)return 4.0/3*PI*r*r*r;public class Testpublic static void main(String args)double r=5.0;Sph a=new Sph();System.out.println(半徑為 5 的球的表面積是:+a.allArea(r); System.out.println(半徑為 5 的球的體積是:+a.volu(r);16.編寫一個 類 A,該類創(chuàng)建的對象可以調(diào)用方 法 f 輸出英文字母表,然后再編寫一個

26、該類的子 類 B,要求 子 類 B 必須繼 承 A 類的方 法 f(不允許重寫),子類創(chuàng)建的對象不僅可以調(diào)用方 法 f 輸出英文字母表,而 且調(diào)用子類新增的方 法 g 輸出希臘字母表。答:class Aint m;void f()for(m=65;m91;m+) System.out.print(char)m+ ); for(m=97;m123;m+) System.out.print(char)m+ ); System.out.println( );class B extends Aint i;void g()for(i=913;i930;i+) System.out.print(char)

27、i+ ); for(i=931;i938;i+) System.out.print(char)i+ ); for(i=945;i962;i+) System.out.print(char)i+ ); for(i=963;i1000)elseMyException exception=new MyException(m);throw exception;System.out.println(m);public class Testpublic static void main(String agrs)int m;Student stu1=new Student();m=987;trystu1.s

28、peak(m); m=1234; stu1.speak(m);catch(MyException e)e.showStr1();18.編寫一個類,該類有一個方 法 public int f(int a,int b) ,該方法返 回a 和 b 的最大公約數(shù)。然后再 編寫一個該類的子類,要求子類重寫方 法 f,而且重寫的方法將返 回 a 和 b 的最小公倍數(shù)。要求在重寫 的方法的方法體中首先 調(diào)用被隱藏的方法返 回 a 和 b 的最大公約 數(shù) m,然后將乘積(a*b)/ m 返回。要求 在應(yīng)用程序 的主類中分別使用 父類和子類創(chuàng)建對象 ,并分別調(diào)用方 法 f 計算兩個正 整數(shù)的最大公約數(shù) 和最小公

29、倍數(shù)。答:class Apublic int f(int a,int b)if(ab)int temp=0;temp=a; a=b; b=temp;int r=a%b;while(r!=0)a=b; b=r; r=a%b;return b;class B extends Apublic int f(int a,int b)int m; m=super.f(a,b); return (a*b)/m;public class Testpublic static void main(String args)A a=new A();System.out.println(18 和 102 的最大公約數(shù)是

30、:+a.f(18,102); B b=new B();System.out.println(18 和 102 的最小公倍數(shù)是:+b.f(18,102);第 5 章 字符串1. 使 用 Strin g 類 的 public String toUpperCase ()方法可 以將一個 字符串中 的小寫字 母變成大 寫字母,使 用 public String toLowerCase ()方法可 以將一個 字符串中 的大寫字 母變成小 寫字母。 編寫一個 程 序,使用這兩個方法實 現(xiàn)大小寫的轉(zhuǎn)換。答:class Testpublic static void main(String args)Strin

31、g str=I can use Java; System.out.println(要轉(zhuǎn)換的字符串是:+str); String s=str.toUpperCase(); System.out.println(轉(zhuǎn)換成大寫字符串是:+s); s=str.toLowerCase(); System.out.println(轉(zhuǎn)換成小寫字符串是:+s);2. 使 用 Strin g 類 的public String concat(Stri ng str)方法可以把調(diào)用該方法的字 符串與參數(shù)指定的字 符串連接, 把 st r 指定的串連 接到當(dāng)前串的尾部獲 得一個新的串。編寫 一個程序通過連接 兩個串得到

32、 一個新串,并輸出這個 新串。答:class Testpublic static void main(String args)String str1=I can u; String str2=se Java;String s=str1.concat(str2);System.out.println(將字符串+str1+與字符串+str2+連接后得到的新字符串是:); System.out.println(s);3. Strin g 類 的 public char charAt(int index)方法可 以得到當(dāng)前字 符 串 inde x 位置上 的一個字符。 說 出下列程序的輸出結(jié)果 。pu

33、blic class E3public static void main(Strin g args)答: 科大String s= 中國科學(xué)技術(shù)大學(xué);char a=s.charAt( 2),b=s.charAt(6); System.ou t.print(a); System.ou t.println(b);4. 使 用 java.uti l 包中 的 Array s 類的靜態(tài)方 法 public static void sort(double a)可以把參 數(shù) a 指 定 的 doubl e 型 數(shù)組 按升 序排 序, 使 用 java.uti l 包 中 的 Array s 類的 靜 態(tài)方

34、法 public static void sort(doubl e a,int start,int end) 可以把參 數(shù) a 指定 的 doubl e 型數(shù)組中從位 置 star t 到 end- 1 位 置的數(shù)按升序排序。寫 出下列程序的輸出結(jié)果。import java.util. *;public class E4public static void main(Strin g args)int a=23,67, 89,90,-987;double b=12.89 ,90.87,34,678.987,-98. 78,0.89; Arrays.sor t(a);Arrays.sor t(b,

35、1,4);for(int i=0;i=4;i+ +)System.ou t.print(ai+,);for(int i=0;ib.len gth;i+)System.ou t.print(bi+,);答: -987,23,67,89,90,12.89,34.0,90.87,678.987,-98.78,0.89,5. 使 用 java.lan g 包 中 Syste m 類的靜 態(tài)方 法 arraycop y 可以實 現(xiàn)數(shù)組的快速 復(fù)制,上機(jī) 實習(xí)下列程序 , 并總結(jié) 出 arraycop y 方法參數(shù)的使用規(guī)則。public class ArrayCopypublic static void

36、 main(Strin g args)char a1=a, b,c,d,e,f,b 1=1,2,3,4, 5,6; System.arr aycopy(a1,0,b1,1,a1.le ngth-1);System.ou t.println(new String(a1) ; System.ou t.println(new String(b1) ;byte a2=97,98 ,99,100,101,102,b2 =65,67,68,69,70,71; System.arr aycopy(b2,0,a2,3,b2.le ngth-3); System.ou t.println(new String(

37、a2) ;System.ou t.println(new String(b2) ;答:運行結(jié)果:abcdef1abcde abcACD ACDEFGarraycopy 的方法是 public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)。其中五個參數(shù)分別表示:src - 被復(fù)制的數(shù)組srcPos - 從第幾個元素開始復(fù)制dest - 要復(fù)制到的數(shù)組destPos - 從第幾個元素開始粘貼length - 一共需要復(fù)制的元素個數(shù)第 6 章 時間、日期和數(shù)字1. 用 Dat a

38、 類不帶參數(shù)的構(gòu)造方法 創(chuàng)建日期,要求日期的輸出格式是 :星期 小時 分 秒。 答:import java.util.*;import java.text.*;class Testpublic static void main(String args)Date 時間=new Date();SimpleDateFormat s=new SimpleDateFormat(E HH 時 mm 分 ss 秒); System.out.println(s.format(時間);2. 輸 出 200 6 年 2 月的日歷頁,程序需處理閏 年問題。 答:import java.util.*;class Te

39、stpublic static void main(String args)int year=2006,month=2; int allDay; if(year%4=0&year%100!=0)|(year%400=0) allDay=29;else allDay=28;Calendar feb=Calendar.getInstance();feb.set(2006,1,1);int dat=feb.get(Calendar.DAY_OF_WEEK)-1; String a=new Stringdat+allDay; for(int i=0;idat;i+)ai= ;for(int i=dat

40、,n=1;i(dat+allDay);i+)if(n=9)ai=String.valueOf(n)+ ;elsen+;ai=String.valueOf(n)+ ;System.out.println(+year+ 年 +month+月); System.out.println(日 一 二 三 四 五 六);for(int j=0;ja.length;j+)if(j%7=0)System.out.println( );System.out.print(aj);3. 計算某年、某月、某日和某年、某月、某日之間的天 數(shù)間隔。要求年、月、日通 過 mai n 方法的參數(shù) 傳 遞到程序中。答:impo

41、rt java.util.*;class Testpublic static void main(String args)Calendar c=Calendar.getInstance();c.set(2000,0,1);long time1=c.getTimeInMillis();c.set(2008,7,8);long time2=c.getTimeInMillis();long dayCous=(time2-time1)/(1000*60*60*24);System.out.println(2008 年 8 月 8 日和 2000 年 1 月 1 日相隔+dayCous+天);4. 編程

42、練習(xí) Mat h 類的常用方法。 答:import java.text.*;public class Testpublic static void main(String args)Double a=Math.abs(-10); System.out.println(-10 的絕對值是:+a); double maxNum=Math.max(123.456,-5.4321);System.out.println(123.456 與-5.4321 中的最大值是:+maxNum); double minNum=Math.min(123.456,-5.4321); System.out.printl

43、n(123.456 與-5.4321 中的最小值是:+minNum); int randomNum=(int)(Math.random()*10)+1; System.out.println(輸出一個 1 到 10 的隨機(jī)數(shù)是:+randomNum); double powNum=Math.pow(2,10);System.out.println(2 的 10 次冪是:+powNum);Double sqrtNum=Math.sqrt(10); System.out.println(10 的平方根是:+sqrtNum); double logNum=Math.log(2); System.ou

44、t.println(2 的對數(shù)是:+logNum); double sinNum=Math.sin(-10); System.out.println(-10 的正弦值是:+sinNum); double asinNum=Math.asin(0.5);System.out.println(0.5 的反正弦值是:+asinNum); System.out.println(格式化之前的數(shù)是:+sqrtNum); NumberFormat f=NumberFormat.getInstance(); f.setMaximumFractionDigits(10); f.setMinimumIntegerD

45、igits(4);String s=f.format(sqrtNum); System.out.println(格式化后:+s);5. 使 用 BigIntege r 類計 算 1!+3!+5!+7!+的 前 3 0 項的和。 答:import java.math.*;public class Testpublic static void main(String args)BigInteger sum=new BigInteger(0), jieCheng=new BigInteger(1), ONE=new BigInteger(1), i=ONE;int k=0;while(+k=30)s

46、um=sum.add(jieCheng); i=i.add(ONE); jieCheng=jieCheng.multiply(i); i=i.add(ONE); jieCheng=jieCheng.multiply(i);System.out.println(sum);第 7 章 AWT 組件及事件處理1. Fram e 類對象的默認(rèn)布局是什么 布局? 和 Pane l 類對象的默認(rèn)布局相同嗎 ?答:Frame 類對象的默認(rèn)布局是 BorderLayout 布局;不相同,Panel 類對象的默認(rèn)布局是 FlowLayout 布局。2. 一個容器對象是否可以使 用 ad d 方法添加一 個 Fr

47、am e 窗口? 答: 不可以。3. Checkbo x 對象可以觸 發(fā) ItemEven t 事件嗎?答: 可以。4. 編寫應(yīng)用程序,有一個標(biāo)題為“計算的窗口 ”的窗口,窗口的布局 為 FlowLayou t 布局。窗口中添加 兩 個文本區(qū), 當(dāng)我們在一個文本 區(qū)中輸入若干個數(shù)時 ,另一個文本區(qū),同 時對輸入的數(shù)進(jìn)行求 和運算并 求出平均值,也就是說 隨著輸入的變化,另一個文本區(qū)不斷地更新求和及 平均值。答:import java.awt.*;import java.awt.event.*;import java.util.*;class Calculated extends Frame i

48、mplements TextListenerTextArea text1,text2;/定義了 2 個文本區(qū) Calculated(String s) /標(biāo)題為“計算的窗口”的窗口super(s);setLayout(new FlowLayout(); /窗口布局為 FlowLayout text1=new TextArea(5,23);text2=new TextArea(5,23);add(text1);add(text2);text2.setEditable(false);/顯示求和結(jié)果和平均值的文本區(qū)禁止編輯text1.addTextListener(this);addWindowLi

49、stener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0););setBounds(100,100,400,160); setVisible(true); validate();public void textValueChanged(TextEvent e)String s=text1.getText();StringTokenizer geshu=new StringTokenizer(s);int n=geshu.countTokens(); double a=new doublen;

50、for(int i=0;in;i+)String temp=geshu.nextToken();double date=Double.parseDouble(temp);ai=date;double sum=0,average;for(int i=0;i0)String str1=text1.getText()+n+text2.getText()+n+text3.getText()+n; String str2=textarea.getText();textarea.setText(str2+str1);elsetext2.setText(輸入了非法格式的 E-mail 地址);public

51、class Testpublic static void main(String args)new WindowBox();8. 寫一個 應(yīng)用程序 ,要求編 寫一 個 Pane l 的子 類 MyPanel, MyPane l 中有一 個文本框 和一個按 鈕,要 求 MyPane l 的實例作為其按鈕 的 ActionEven t 事件的監(jiān)視器,當(dāng)單擊按鈕 時,程序獲取文本框中的文本,并將該文本作為按鈕的 名稱。然后在編寫一 個 Fram e 的子類,即窗口。窗口的布局 為 BorderLayou t 布局。窗口中添加兩 個 MyPane l 面板,分別添加到窗口的 東部區(qū)域和西部區(qū)域。 答:

52、import java.awt.*;import java.awt.event.*;class MyPanel extends Panel implements ActionListenerString name; TextField text; Button button; MyPanel()text=new TextField(10); button=new Button(確定); add(text);add(button);button.addActionListener(this);addWindowListener(new WindowAdapter()public void win

53、dowClosing(WindowEvent e)System.exit(0););public void actionPerformed(ActionEvent e)if(e.getSource()=button)name=text.getText();button.setLabel(name);class MyFrame extends FrameMyPanel panel1,panel2; MyFrame()panel1=new MyPanel(); panel2=new MyPanel(); add(panel1,BorderLayout.EAST); add(panel2,Borde

54、rLayout.WEST); setBounds(100,100,400,100);setVisible(true);validate();public class Testpublic static void main(String args)MyFrame win=new MyFrame();9. 參照例 子 7.1 8 編寫一個應(yīng)用程序,要求有一個畫布 ,在畫布上繪制一個矩形,用戶通過文本框輸入矩 形的寬和高以及矩形左 上角的位置坐標(biāo)。答:import java.awt.*;import java.awt.event.*;class Mycanvas extends Canvasint

55、x,y,w,h; Mycanvas()setBackground(Color.cyan);public void setX(int x)this.x=x;public void setY(int y)this.y=y;public void setW(int w)this.w=w;public void setH(int h)this.h=h;public void paint(Graphics g)g.drawRect(x,y,w,h);class WindowCanvas extends Frame implements ActionListenerMycanvas canvas;Text

56、Field text1,text2,text3,text4; Button button;WindowCanvas()canvas=new Mycanvas(); text1=new TextField(4); text2=new TextField(4); text3=new TextField(5); text4=new TextField(5);Panel pNorth=new Panel(),pSouth=new Panel(); button=new Button(確定); button.addActionListener(this); pNorth.add(new Label(矩形

57、的寬: ); pNorth.add(text3);pNorth.add(new Label(矩形的高: );pNorth.add(text4);pSouth.add(new Label(左上角位置坐標(biāo):);pSouth.add(text1); pSouth.add(text2); pSouth.add(button);addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0););add(canvas,BorderLayout.CENTER); add(pNorth,Bo

58、rderLayout.NORTH); add(pSouth,BorderLayout.SOUTH); setBounds(100,100,500,500); setVisible(true);validate();public void actionPerformed(ActionEvent e)int x,y,w,h;tryx=Integer.parseInt(text1.getText();y=Integer.parseInt(text2.getText();w=Integer.parseInt(text3.getText();h=Integer.parseInt(text4.getTex

59、t();canvas.setX(x); canvas.setY(y); canvas.setW(w); canvas.setH(h); canvas.repaint();catch(NumberFormatException ee)x=0;y=0;w=0;h=0;public class Testpublic static void main(String args)new WindowCanvas();10.編寫應(yīng)用程序,有一個窗口 對象,該窗口取它的默認(rèn)布局: BorderLayou t 布局,北面添加一 個 Lis t 組 件,該組件有四個商品名稱的 選項。中心添加一個文本區(qū),當(dāng)選 擇

60、Lis t 組件中的某個選項后,文本 區(qū) 顯示對該商品的價格和 產(chǎn)地:當(dāng)雙 擊 Lis t 組件中的某個選項后,文本 區(qū)顯示該商品的詳細(xì)廣告。答:import java.awt.*;import java.awt.event.*;class WindowGoods extends Frame implements ActionListener,ItemListenerString s=產(chǎn)地:北京,產(chǎn)地:上海,產(chǎn)地:沈陽,產(chǎn)地:廣東; String p=價格:3200,價格:158,價格:13.2,價格:320/打;String a=本商品*,本商品*,本商品*,本商品*; List list;

溫馨提示

  • 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

提交評論