普通高等教育十一五國家級規(guī)劃教材《JAVA程序設計》課后習題答案大全
3第一章一.判斷題1. X 2. V 3. V 4. X 5. V二.單選題1. D 2. D 3. D三.問答題1 .答:1.答:Java程序的運行必須經過編寫、編譯、運行三個步驟。編寫是指在Java 開發(fā)環(huán)境中進行程序代碼的輸入過程,最終形成后綴名為java的Java源文件。編譯是指使 用Java編譯器對源文件進行錯誤排查的過程,編譯后將生成后綴名為.class的字節(jié)碼文件。 運行是指使用Java解釋器將字節(jié)碼文件翻譯成機器代碼,在cpu上運行并顯示結果的過程。2 .答:(1)在Dos模式下利用Javac語句將源代碼編譯成字節(jié)碼,然后利用Java語句執(zhí) 行已經轉換成字節(jié)碼的java應用程序.(2)將Java源程序文件通過Java編譯器成為字節(jié)碼文件,最后經過Java解釋器運行程序.四.運行題Good Luck!第二章一.判斷題1. X2, V3. V4. X5. V二.單選題1 .A2. B3. B4. A5. A三.解答題1 .答對下列變量進行說明(1) int i=l(2) float i=1.0(3) double x=1234(4) boolean i=ture(5) char2 .答:如下圖所示字節(jié)型byte整數(shù)類型短整型short 整型int 長整型long廠基本數(shù)據(jù)類型數(shù)據(jù)類型Yu引用數(shù)據(jù)類型廠單精度浮點型floatKj雙精度浮點型double字符類型charI布爾類型boolean數(shù)據(jù)類型所占位數(shù)數(shù)的取值范因byte8-227-1short16_2】52巴1int32-23】231-1long6433 263-1float32-3.4X103M.4EX 1038 (精度為6到7位有效數(shù)字)double64-1.7X10308-1.7X 103。8 (精度為14到15位有效數(shù)字)3.答:若是所占位數(shù)小的轉換成所占位數(shù)大的,則不會丟失其精度:若是高級向低級轉換 的話,則需要進行強制轉換!但會導致溢出或精度下降。4,答:(1) false(2) ture (3) false (4) ture5.答:(1) x>=0 II x<0(2) x>l && x<1006.答: y=l(2)y=45(3) y=2四.編程題1 .答:使用while循環(huán)改寫下列for循環(huán)。改寫后是:int y=0, x=l;While(y<10000)(y=y+x;X+;)2 .判斷某一年份是否是閏年。答import java. io. *;public class TestYearpublic static void main(String agrs) throws lOExceptiontryInputStreamReader year;BufferedReader n;year=new InputStreamReader(System, in);n=new BufferedReader(year);System. out. print ("請輸入一年份:“);String s=n. readLine 0;int leapyear=Integer. parselnt(s); 把輸入的字符串轉換成整型if(leapyear%4=0 && leapyear%100!=0leapyear%400=0)System. out. print (leapyear+年是I司年!”);elseSystem, out. print (leapyear+”年不是閏年!”);catch(lOException e)運行結果是:C:<IIH>0<S8y8t e32cad. axeMicrosoft WindowG XP (版本 5.1.2600 (C)版權所有 19852。1 Microsoft Corp.C:Documcnts and 59ttingsAdministrator>E:E:>jauac TestVear.jauaE:>jaua TostVoar 情輸入一年份:2008 年是閏年!E:>.3 .答:public class Tuan (for(public static void main(String Largs) (int i=l; i<=4; i+) /夕卜循環(huán)控制打印的行數(shù)for (int k=l;k<=4-i;k+)System. out. print C "); 打印空格 for (int j=l;j<=2*i-l;j+) System, out. print (*); /打印"*"System, out. printlnO ;換行打印8)djsll結果顯示:八 C : WINDOWSsy stem32cmd. exe MicosoFlT Windowr XP 5.1.26fiAl <C> 版權所有 1985-2001 Microsoft; Covp.C: D(jcunents cntl St things翁>G:isTuan -jouaG: Jaua>Java TuanXXXXXXXKXG:第三章一.判斷題1 .V2. X 3. X 4. V 5. X二.選擇題1.B2. AC 3, BD 4,B5. B三.寫出運行結果 What a pleasure!I am TomHow do you do?四.編程題解法一package mypackage.math; class Rectangle private mt length; private int width;public Rectangle(int length,int width)this.lengtli=lengtli;this.width=width;public void set(int lengthjnt width)this.lengtli=lengtli;this.width=width;public void getQSystem. out. printlnC,此長方形的長為 ll+length+"寬為 "+width);public mt getLength() return length;public mt getWidtli() return width;public mt calculatePeruneterQ return 2*(length+width);public mt calculateAiea() return (length*width);public void print()System. out. printlnC此長方形的周 長為"+calculatePerimeter()+“面積為"+calculateArea(); class Testpublic static void mam(Strmg args)Rectangle myiectangle=new Rectangle( 15,10);myrectaiigle.getQ;myrectaiigle.piint();myrectaiigle.set(20,15);System. out.piintln(" 長方形 的長是 n+myrectaiigle.getLengtliQ+H 寬 是 “+ myrectaiigle .getWidthQ);myrectaiigle.piint(); 解法二1. Rectpackage 包package Rectpackage;public class Rect (int length;int width;public RectQ tliis. length=0: tliis. wid th=O:public void set(iiit L.int W) length=L;width=W;public void getQ System. out. pun山1(" 矩形的長度是:“+length+” 寬度是:“+width);public void aiea() System, out. printing矩形的面積是:“+length*width);public void ciea() System. out. printing 矩形的周長是:”+2*(length+width); 2. TestRect.java 源程序miport Rectpackage.*;public class TestRectpublic static void niain(Strmgargs)Rect A=new RectQ;A.set(20,30);A.getQ;A.areaQ;A.creaQ;-Ialxl3. 運行結果:c;f C:WIND0WSsysteni32cnid.exeD: jaua>Jaucic Rectpackage Rect - Jaua的的 - - ua是是是 ”度積長 a>長面周五.問答題1 .答:Java中使用static修飾的變量和方法稱為類變量(或稱靜態(tài)變量)和類方法(或稱靜 態(tài)方法),沒用static修飾符的變量和方法稱為實例變量和實例方法。類成員是指該成員屬于這個類,由這個類所創(chuàng)建的所有對象共同擁有,該成員僅在類的存儲 單元中存在,這個類所創(chuàng)建的所有對象中僅存儲一個指向該成員的引用。任何一個該類的對 象改變了類成員,其他對象同樣會發(fā)生改變。對于類成員既可以使用對象訪問,也可以使用 類名直接進行訪問,并且在類方法中只能訪問類變量,而不能訪問實例變量。實例成員是指該成員由每一個對象個體獨有,對象的存儲空間中的確有一塊空間用來存儲該 成員,不同對象的實例成員不同,任何一個對象改變了實例成員,只會影響這個對象本身, 其他對象中的實例成員不會發(fā)生改變。對于實例成員只能通過對象來訪問,不能通過類名進 行訪問,在實例方法中既可以訪問實例變量,也可以訪問類變量。2 .答:繼承是面向對象程序設計中兩個類之間的一種關系。當一個類獲取另一個類中所有非私 有的數(shù)據(jù)和操作的定義作為它自己的部分或全部成分時,就稱這兩個類之間具有繼承關系。 被繼承的類稱為父類或超類,繼承了父類或超類的所有數(shù)據(jù)和操作的類稱為子類。面向對象程序設計中的繼承,可使得程序結構更加清晰,降低了編碼和維護的工作量。3 .答:如果子類只從一個父類繼承,則叫單重繼承。如果子類從一個以上父類繼承,則叫多重繼承。第四章一.判斷題1. X 1.43.X4. V 5.X6. V 7.J8. V 9.V二.選擇題1. C 2. A 3.C4. C三.解答題1 .答:常見的五種異常:內存耗盡、數(shù)組下標超出邊界、被。除、非法的方法參數(shù)、算法溢出處。(1) AritliineticException(2) NullPomterException(3) ClassCastException(4) IndexOutOfBoundsException(5) AriayOutOfLengtliException2 .答:未捕獲的異常最終會導致程序非正常終止。3 .答:public class ExceptionExam(public static void mam(Strmg args)(tryint i=0;i=3/i; 將產生算術異常。catch(AiithineticException e)找到 了匹配的異常,執(zhí)行該 catch 塊。(System.out.printing發(fā)生了 AiitluneticException 異常)catch(AanyIndexOutOfBoundsException e)不是匹配的異常,且不會再捕獲 異常,如果發(fā)生數(shù)組索引超出范圍所產生的異常,將執(zhí)行該catch塊。(System.out.p】intln("發(fā)生了 AanylndexOutOfBoundsException 異常)catch(Exception e)前兩個catch塊均無法捕獲try塊中發(fā)生的異常時,才會執(zhí)行該catch塊。System. out. printin("發(fā)生了 異?!?;filiallySystem.out.pimthi(nExecuted Finally"); )4 .答:答案:throws代表一種狀態(tài),代表方法可能有異常拋出,用在方法聲明中可以拋出多 個異常!5 .答案:沒有用tluows聲明要拋出的異常!6 ,略第五章一.判斷題1. X 2, V二.選擇題1. D 2. A 3. D三.解答題答:有init、start和paint三種方法。四.編程題import j ava. applet.*;import java.public class Hello extends Applet(public void paint(Grapliics g)(g.ckawingStiing("歡迎學習 Java1050);<Applet code=<<Hello.classn widtli=400 height=150></Applet>/by > -第八章1.答案:圖像用戶界面,使用圖形的方式,借助菜單、按鈕等標準界面元素和鼠標操作,幫助用 戶方便地向計算機系統(tǒng)發(fā)出命令,啟動操作,并將系統(tǒng)運行的結果以圖形的方式顯示給用戶。 字符界面使用單純的字符作為計算機系統(tǒng)的輸入輸出。對于熟悉字符命令的用戶,它可以提 供更加強大、更雜的操作靈活性,但是不能處理非文字的信息,而且不如圖形界面方便、直 觀、友好。圖形界面中常用的組件有菜單、文本域、標簽、選擇鈕、列表、按鈕、滾動條等。 2.答案:Java中圖形界面的構成成分可以大致分類:容器、控制組件、用戶自定義成分。容器 用來包容和組織其他界面成分;控制組件是完成與用戶交互的最小單元;用戶自定義成分通 常只有顯示功能,不能接收用戶的輸入。設計和實現(xiàn)圖形用戶界面的工作主要有兩個:創(chuàng)建、 組織各成分和定義各成分的功能,即它們對事件的響應。3 .答案:事件處理的特殊之處在于其操作的啟動不是主動地掌握在程序流程中,而是由與程序交 互的用戶在使用程序時即興決定的。相應地,事件處理機制必須具有監(jiān)聽的功能,以便隨時 監(jiān)測用戶的動作。要實現(xiàn)監(jiān)聽功能,必須有事先定義好的事件,并規(guī)定不同事件由什么事件 源產生,有什么監(jiān)聽者處理。事件源是可能產生事件的圖形用戶界面組件。監(jiān)聽者定義了處 理事件源所產生的事件的操作,把事件源注冊給按事件類型匹配的監(jiān)聽者后,系統(tǒng)在監(jiān)聽到 事件源產生的事件后自動調用監(jiān)聽者中定義的操作完成交互過程,這就是Java的事件處理 機制。把事件源注冊給監(jiān)聽者,讓監(jiān)聽者處理事件,稱為委托事件模型。能夠產生事件的就 時間源,實現(xiàn)了處理事件的接口的就是監(jiān)聽者。在Java圖形用戶界面中,事件源通常是各 種控制組件,監(jiān)聽者通常是各種容器相關。4 .答案:按鈕(Button)、文本組件(TextField,TextArea)、列表(List)和菜單選項(Menuitem)都是動作 事件源。響應動作事件需要注冊動作事件源,實現(xiàn)actionPeifonned()方法。5 .答案:需要new來實例化對象。Jlale是類名,不能用作變量名。傳送構造函數(shù)的參數(shù)顛倒了。第一個參數(shù)必須是Suingo己經設置了 GndeLayout布局管理器,但添加的構件沒有指定區(qū)域。正確的add語句 應為:c.add(buttonl,BordeiLayout.NORTH);c.add(buttoii2,BoideiLayout.NORTH);6 .答案:源程序:Luoxuan .javamiport java.awt.*:miport java.applet.Applet:public class Luoxuaii extends Applet(int width=50 Jieight=5O :int x=100,y=70;int staitA=0:public void paint(Graphics g)(fbr(int i=0; i<10; i+)(g.diawArc(x,y, width,height,startA,90);=0)(width += 20:x -= 10;)else(height += 20:y -= 10;startA = (startA + 90)%360;7 .答案:源程序:Xianslu.javamiport java.applet.* ;unport java.awt.*:public class Xiaiislii extends Applet (Label ledLbl = new Label("紅色”);Label yellowLbl = new Label,黃色)Label bhieLbl = new Label,藍色)public voidredLbl.setBackgiound(Color.ied):yellowLbl.setBackground(ColoE yellow):blueLbl.setBackground(Color.blue);add(redLbl);add(yellowLbl):add(blueLbl);8 .答案:源程序:Suofaiig.javaunport java.applet.* ;unport java.awt.*:unport java.awt.event.* ;public class Suofaiig extends Applet miplements ActionListener (Strmg nisgSUmg = "SEE ME9 AMI CLEAR ENOUGH?H;Button eiilargeBtn = new Button("放大”);Button dwiiidleBtn = new Button("縮 小)int currentFontSize = 12:public void uiitQ (add(enlargeBtn);add(dwindleBtn);currentFontSize =12;enlargeBtn.addActionListener(this):dwindleBtn.addActionListener(this);public void paint(Graphics g) (Font newFont,oldFont:oldFont = g.getFontQ:newFont = new Font(oldFont.getFontNameQ, oldFont.getStyleQ, currentFontSize); g.setFont(newFont):g.drawString(msgStimg, 10,100):public void actionPerfbrmed(ActioiiEvent ae)if(ae.getSourceQ = enlaigeBtn) cuirentFontSize+ :else if(ae.getSoufce() = dwiiidleBtn) cunentFontSize-;System.out.println(cunentFontSize);repaiiitQ;9 .答案:源程序:Xuanzhuaii.javamiport j a va. applet. Applet :unport java.awt.*:miport java.awt.event.* ;public class Xuaiizliuaii extends Applet miplements ActionListener (linage m_Images:int totallinages = 18:int currentlinage = 0;int fiameChange = 0;Button leftRotateBui = new Button("左旋”);Button rightRotateBtn = new Button("右旋”);public void uiitQ (m_Iiiiages = new Iinagetotallniages;fbr(mt i=0:KTOTALDvIAGES;i+) m_Iinagesi = getImage(getDocumentBase(), “imagesImgOO" + (i+1) + Igif) add(leftRotateBtn);add(riglitRotateBtn);leftRotateB til. addActionListener(this);rightRotateBtn.addActioiiListener(tliis);public void start。(currentlniage = 0:public void paint(Graphics g)(g.drawlmage(nvliiiagescuirentlmage ,50,50,this);cunentlinage = cunentlinage+fiameChange ;iffcuiTentlinage < 0)cunentlinage += totallinages; elsecunentlinage %= totallinages; tryThread.sleep(50);catch(IiiteniiptedException e)(showStatus(e.toStringO);repamt();public void actionPerfbrmed(ActioiiEvent ae)(if(ae.getSourceQ = leftRotateBtn) fiameChange = -1:else if(ae.getSouice() = rightRotateBtn) fiameChange = 1;13