java2實(shí)用教程課后習(xí)習(xí)題答案(第三版編程題)_第1頁
java2實(shí)用教程課后習(xí)習(xí)題答案(第三版編程題)_第2頁
java2實(shí)用教程課后習(xí)習(xí)題答案(第三版編程題)_第3頁
java2實(shí)用教程課后習(xí)習(xí)題答案(第三版編程題)_第4頁
java2實(shí)用教程課后習(xí)習(xí)題答案(第三版編程題)_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、3. 編寫應(yīng)用程序,求1!+2!+10!。答:class Factpublic static void main(String args)int fact,sum=0;for(int i=1;i<=10;i+)fact=1;for(int j=1;j<=i;j+)fact*=j;sum+=fact;"1到10的階乘之和是:"+sum);4. 編寫一個(gè)應(yīng)用程序,求100以內(nèi)的全部素?cái)?shù)。答:class Primespublic static void main(String args)int w=1;for(int i=2;i<=100;i+)for(int

2、j=2;j<i;j+)w=i%j;if(w=0)break;if(w!=0)"是素?cái)?shù)");5. 分別用dowhile和for循環(huán)計(jì)算1+1/2!+1/3!+1/4!+的前20項(xiàng)和。答: 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+=fact;dowhile循環(huán)class Sumpublic static void main(String a

3、rgs)int i=1;int fact;double sum=0;dofact=1;int j=0;while(+j<=i)fact*=j;sum+=fact;while(+i<=20);6. 一個(gè)數(shù)如果恰好等于它的因子之和,這個(gè)數(shù)就稱為“完數(shù)”。編寫應(yīng)用程序,求1000之內(nèi)的所有完數(shù)。答:class Wanshu public static void main(String args)int x,i,sum;for(x=1;x<=1000;x+)sum=0;for(i=1;i<x;i+)if(x%i=0)sum+=i;if(x=sum)"是完數(shù)"

4、);7. 編寫應(yīng)用程序,分別使用while和for循環(huán)計(jì)算8+88+888+前10項(xiàng)之和。答: 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;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;8. 編寫應(yīng)用程

5、序,輸出滿足1+2+3+n<8888的最大正整數(shù)n。答:class Maxnpublic static void main(String args)int k=1,sum=0;while(sum+=k)<8888)k+;k-;"最大能取到:"+k);15.模仿例子,編寫一個(gè)類實(shí)現(xiàn)兩個(gè)接口的程序。答: interface 表面積double allArea(double r);interface 體積double volu(double r);class Sph implements 表面積,體積double PI=;public double allArea(d

6、ouble r)return 4*PI*r*r;public double volu(double r)return 3*PI*r*r*r;public class Testpublic static void main(String args)double r=;Sph a=new Sph();"半徑為5的球的表面積是:"+(r);"半徑為5的球的體積是:"+(r);16.編寫一個(gè)類A,該類創(chuàng)建的對(duì)象可以調(diào)用方法f輸出英文字母表,然后再編寫一個(gè)該類的子類B,要求子類B必須繼承A類的方法f(不允許重寫),子類創(chuàng)建的對(duì)象不僅可以調(diào)用方法f輸出英文字母表,而

7、且調(diào)用子類新增的方法g輸出希臘字母表。答: class A int m;void f() for(m=65;m<91;m+)" ");for(m=97;m<123;m+)" ");" ");class B extends A int i;void g() for(i=913;i<930;i+)" ");for(i=931;i<938;i+)" ");for(i=945;i<962;i+)" ");for(i=963;i<970;i+)&qu

8、ot; ");" "); public class Test public static void main(String args) B b=new B();"我調(diào)用方法f輸出英文字母表:");();"我調(diào)用方法g輸出希臘字母表:");();17.編寫一個(gè)異常類MyException,再編寫一個(gè)類Student,該類有一個(gè)產(chǎn)生異常的方法public void speak(int m) throws MyException,要求參數(shù)m的值大于1000時(shí),方法拋出一個(gè)MyException對(duì)象。最后編寫主類,在主類的main方

9、法中用Student創(chuàng)建一個(gè)對(duì)象,讓該對(duì)象調(diào)用speak方法。答:class MyException extends Exception String str1;MyException(int m) str1=m+"出現(xiàn)錯(cuò)誤 可能造成的原因是取值大于1000"public void showStr1() Student public void speak(int m) throws MyException if(m>1000) MyException exception=new MyException(m);throw exception;else class Tes

10、t public static void main(String agrs) int m;Student stu1=new Student();m=987;try (m);m=1234;(m);catch(MyException e) (); 18.編寫一個(gè)類,該類有一個(gè)方法public int f(int a,int b),該方法返回a和b的最大公約數(shù)。然后再編寫一個(gè)該類的子類,要求子類重寫方法f,而且重寫的方法將返回a和b的最小公倍數(shù)。要求在重寫的方法的方法體中首先調(diào)用被隱藏的方法返回a和b的最大公約數(shù)m,然后將乘積(a*b)/m返回。要求在應(yīng)用程序的主類中分別使用父類和子類創(chuàng)建對(duì)象,并分

11、別調(diào)用方法f計(jì)算兩個(gè)正整數(shù)的最大公約數(shù)和最小公倍數(shù)。答: class Apublic int f(int a,int b)if(a<b)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=(a,b);return (a*b)/m;public class Testpublic static void main(String args)A a=new A();"18和102的最大公約數(shù)是

12、:"+(18,102);B b=new B();"18和102的最小公倍數(shù)是:"+(18,102); 1. 使用String類的public String toUpperCase()方法可以將一個(gè)字符串中的小寫字母變成大寫字母,使用public String toLowerCase()方法可以將一個(gè)字符串中的大寫字母變成小寫字母。編寫一個(gè)程序,使用這兩個(gè)方法實(shí)現(xiàn)大小寫的轉(zhuǎn)換。答: class Testpublic static void main(String args)String str="I can use Java""

13、;要轉(zhuǎn)換的字符串是:"+str);String s=();"轉(zhuǎn)換成大寫字符串是:"+s);s=();"轉(zhuǎn)換成小寫字符串是:"+s);2. 使用String類的public String concat(String str)方法可以把調(diào)用該方法的字符串與參數(shù)指定的字符串連接,把str指定的串連接到當(dāng)前串的尾部獲得一個(gè)新的串。編寫一個(gè)程序通過連接兩個(gè)串得到一個(gè)新串,并輸出這個(gè)新串。答: class Testpublic static void main(String args)String str1="I can u"Strin

14、g str2="se Java"String s=(str2);"將字符串"+str1+"與字符串"+str2+"連接后得到的新字符串是:");1. 用Data類不帶參數(shù)的構(gòu)造方法創(chuàng)建日期,要求日期的輸出格式是:星期 小時(shí) 分 秒。答: import .*;import .*;class Testpublic static void main(String args)Date 時(shí)間=new Date();SimpleDateFormat s=new SimpleDateFormat("E HH時(shí) mm分

15、ss秒");時(shí)間);3. 計(jì)算某年、某月、某日和某年、某月、某日之間的天數(shù)間隔。要求年、月、日通過main方法的參數(shù)傳遞到程序中。答: import .*;class Testpublic static void main(String args)Calendar c=();(2000,0,1);long time1=();(2008,7,8);long time2=();long dayCous=(time2-time1)/(1000*60*60*24);"2008年8月8日和2000年1月1日相隔"+dayCous+"天");5. 使用Bi

16、gInteger類計(jì)算1!+3!+5!+7!+的前30項(xiàng)的和。答: import .*;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)sum=(jieCheng);i=(ONE);jieCheng=(i);i=(ONE);jieCheng

17、=(i);4. 編寫應(yīng)用程序,有一個(gè)標(biāo)題為“計(jì)算的窗口”的窗口,窗口的布局為FlowLayout布局。窗口中添加兩個(gè)文本區(qū),當(dāng)我們?cè)谝粋€(gè)文本區(qū)中輸入若干個(gè)數(shù)時(shí),另一個(gè)文本區(qū),同時(shí)對(duì)輸入的數(shù)進(jìn)行求和運(yùn)算并求出平均值,也就是說隨著輸入的變化,另一個(gè)文本區(qū)不斷地更新求和及平均值。答: import .*;import .*;class Calculated extends Frame implements TextListener TextArea text1,text2; 文本區(qū)可以使用getSelectedText()方法獲取該文本區(qū)通過拖動(dòng)鼠標(biāo)選中的文件。編寫應(yīng)用程序,有一個(gè)標(biāo)題為“挑單詞”的

18、窗口,窗口的布局為BorderLayout布局。窗口中添加兩個(gè)文本去和一個(gè)按鈕組件,要求文本區(qū)分別添加到窗口的東部區(qū)域和西部區(qū)域;按鈕添加到窗口的南部區(qū)域,當(dāng)單擊按鈕時(shí),程序?qū)|部區(qū)域的文本區(qū)中鼠標(biāo)選中的內(nèi)容尾加到西部區(qū)域的文本區(qū)中。答: import .*;import WindowSelectedText extends Frame implements ActionListener TextArea text1,text2; 改進(jìn)例子,在程序中增加一個(gè)名稱為“確定”的按鈕和一個(gè)文本區(qū)。當(dāng)單擊按鈕時(shí),程序驗(yàn)證用戶是否輸入了合法的E-mail地址格式,如果合法就將用戶輸入的姓名、E-mail

19、和職業(yè)尾加到文本區(qū)中,否則在輸入E-mail的文本框中提示用戶輸入了非法格式的E-mail地址。答: import .*;import .*;import WindowBox extends Frame implements ActionListener TextField text1,text2,text3;TextArea textarea;Box baseBox,boxV1,boxV2;Button button;WindowBox() button=new Button("確定");textarea=new TextArea(6,12);text1=new Text

20、Field(12);text2=new TextField(12);text3=new TextField(12);boxV1=();(new Label("姓名");(8);(new Label("email");(8);(new Label("職業(yè)");boxV2=();(text1);(8);(text2);(8);(text3);baseBox=();(boxV1);(10);(boxV2);setLayout(new FlowLayout();add(baseBox);add(button);add(textarea);ad

21、dWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)(0););(false);(this);setBounds(100,100,210,250);setVisible(true);validate();public void actionPerformed(ActionEvent e) boolean a;int b;String s;if()=button) s=();a=("");b=("");if(a&&b>0) String

22、str1=()+"n"+()+"n"+()+"n"String str2=();(str2+str1);else ("輸入了非法格式的E-mail地址");public class Test public static void main(String args) new WindowBox();8. 寫一個(gè)應(yīng)用程序,要求編寫一個(gè)Panel的子類MyPanel,MyPanel中有一個(gè)文本框和一個(gè)按鈕,要求MyPanel的實(shí)例作為其按鈕的ActionEvent事件的監(jiān)視器,當(dāng)單擊按鈕時(shí),程序獲取文本框中的文本,并將該

23、文本作為按鈕的名稱。然后在編寫一個(gè)Frame的子類,即窗口。窗口的布局為BorderLayout布局。窗口中添加兩個(gè)MyPanel面板,分別添加到窗口的東部區(qū)域和西部區(qū)域。答: import .*;import MyPanel extends Panel implements ActionListener String name;TextField text;Button button;MyPanel() text=new TextField(10);button=new Button("確定");add(text);add(button);(this);addWindow

24、Listener(new WindowAdapter()public void windowClosing(WindowEvent e)(0););public void actionPerformed(ActionEvent e) if()=button) name=();(name);class MyFrame extends Frame MyPanel panel1,panel2;MyFrame() panel1=new MyPanel();panel2=new MyPanel();add(panel1,;add(panel2,;setBounds(100,100,400,100);se

25、tVisible(true);validate();public class Test public static void main(String args) MyFrame win=new MyFrame();9. 參照例子編寫一個(gè)應(yīng)用程序,要求有一個(gè)畫布,在畫布上繪制一個(gè)矩形,用戶通過文本框輸入矩形的寬和高以及矩形左上角的位置坐標(biāo)。答:import .*;import Mycanvas extends Canvas int x,y,w,h;Mycanvas() setBackground;public void setX(int x) =x;public void setY(int y)

26、 =y;public void setW(int w) =w;public void setH(int h) =h;public void paint(Graphics g) (x,y,w,h);class WindowCanvas extends Frame implements ActionListener Mycanvas canvas;TextField text1,text2,text3,text4;Button button;WindowCanvas() canvas=new Mycanvas();text1=new TextField(4);text2=new TextField

27、(4);text3=new TextField(5);text4=new TextField(5);Panel pNorth=new Panel(),pSouth=new Panel();button=new Button("確定");(this);(new Label("矩形的寬: ");(text3);(new Label("矩形的高: ");(text4);(new Label("左上角位置坐標(biāo):");(text1);(text2);(button);addWindowListener(new WindowA

28、dapter()public void windowClosing(WindowEvent e)(0););add(canvas,;add(pNorth,;add(pSouth,;setBounds(100,100,500,500);setVisible(true);validate();public void actionPerformed(ActionEvent e) int x,y,w,h;try x=();y=();w=();h=();(x);(y);(w);(h);();catch(NumberFormatException ee) x=0;y=0;w=0;h=0;public cl

29、ass Test public static void main(String args) new WindowCanvas();10.編寫應(yīng)用程序,有一個(gè)窗口對(duì)象,該窗口取它的默認(rèn)布局: BorderLayout布局,北面添加一個(gè)List組件,該組件有四個(gè)商品名稱的選項(xiàng)。中心添加一個(gè)文本區(qū),當(dāng)選擇List組件中的某個(gè)選項(xiàng)后,文本區(qū)顯示對(duì)該商品的價(jià)格和產(chǎn)地:當(dāng)雙擊List組件中的某個(gè)選項(xiàng)后,文本區(qū)顯示該商品的詳細(xì)廣告。答: import .*;import WindowGoods extends Frame implements ActionListener,ItemListener Stri

30、ng s="產(chǎn)地:北京","產(chǎn)地:上海","產(chǎn)地:沈陽","產(chǎn)地:廣東"String p="價(jià)格:3200","價(jià)格:158","價(jià)格:","價(jià)格:320/打"String a="本商品*","本商品*","本商品*","本商品*"List list;TextArea text;WindowGoods()list=new List(3,false);text

31、=new TextArea(6,20);(false);("商品1");("商品2");("商品3");("商品4");add(list,;add(text,;(this);(this);addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)(0););setBounds(100,100,300,300);setVisible(true);validate();public void itemStateChanged

32、(ItemEvent e)if()=list)int m=();(pm+'n'+sm);public void actionPerformed(ActionEvent e)int n=();(an);public class Testpublic static void main(String args)new WindowGoods();11.編寫程序,觀察各種組件設(shè)置背景色和前景色的情況。答: import .*;import WindowColor extends Frame implements ActionListener Button button; 寫應(yīng)用程序,有

33、一個(gè)標(biāo)題為“移動(dòng)”的窗口,窗口的布局為null,在窗口中有兩個(gè)按鈕,單擊一個(gè)按鈕讓另一個(gè)按鈕移動(dòng)。答: import .*;import WindowMove extends Frame implements ActionListenerButton button1,button2;WindowMove(String s) super(s);setLayout(null);button1=new Button("我讓它橫向走動(dòng)");button2=new Button("我讓它縱向走動(dòng)");(this);(this);););add(button1);a

34、dd(button2);addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)(0););(20,80,100,30);(100,180,100,30);setBounds(100,100,500,500);setVisible(true);validate();public void actionPerformed(ActionEvent e)Rectangle rect1=();int x1=(int)();int y1=(int)();Rectangle rect2=();int x2=(

35、int)();int y2=(int)();if()=button1)x2=x2+5;(x2,y2);else if()=button2)y1=y1+5;(x1,y1);public class Testpublic static void main(String args)new WindowMove("移動(dòng)");13.編寫應(yīng)用程序,有一個(gè)標(biāo)題為“改變顏色”的窗口,窗口的布局為null,在窗口中有3個(gè)按鈕和一個(gè)畫布,3個(gè)按鈕的顏色分別是紅、綠、藍(lán)。單擊相應(yīng)的按鈕,畫布繪制相應(yīng)顏色的圓。答: import .*;import WindowChangeColor extend

36、s Frame implements ActionListenerButton buttonRed,buttonGreen,buttonBlue;Mycanvas canvas;WindowChangeColor(String s)super(s);setLayout(null);buttonRed=new Button("紅色");buttonGreen=new Button("綠色");buttonBlue=new Button("藍(lán)色");canvas=new Mycanvas();add(canvas);(10,10,150,

37、150);add(buttonRed);(10,170,50,30);add(buttonGreen);(70,170,50,30);add(buttonBlue);(130,170,50,30);(this);(this);(this);addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)(0););setBounds(100,100,200,250);setVisible(true);validate(); public void actionPerformed(ActionEvent e

38、)if()=buttonRed)(1);();else if()=buttonGreen)(2);();else if()=buttonBlue)(3);();class Mycanvas extends Canvasint x=0;Mycanvas()setBackground;public void setX(int y)x=y;public void paint(Graphics g)switch(x)case 1:;break;case 2:;break;case 3:;break;default: ; (65,65,50,50);public class Testpublic sta

39、tic void main(String args)new WindowChangeColor("改變顏色");14.編寫應(yīng)用程序,測(cè)試Cursor類中表示鼠標(biāo)形狀的靜態(tài)常量。答: import .*;import WindowCursor extends Frame implements ActionListenerButton button,button1;TextField text;int n=-1;WindowCursor()button=new Button("單擊我");text=new TextField("將鼠標(biāo)放在上面的按鈕

40、上看形狀");button1=new Button("看看你鼠標(biāo)的形狀");add(button,;add(button1,;add(text,;(this);addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)(0););setBounds(100,100,190,150);setVisible(true);validate();public void actionPerformed(ActionEvent e)n=(n+1)%10;switch(n)case

41、0: );break;case 1:);break;case 2:);break;case 3:);break;case 4:);break;case 5:);break;case 6:);break;case 7:);break;case 8:);break;case 9:);break;public class Testpublic static void main(String args)new WindowCursor(); 15.改進(jìn)本章例子,當(dāng)釋放鼠標(biāo)鍵時(shí),如果當(dāng)前組件和其他組件相交,就將其他組件設(shè)置為不可見狀態(tài)。答: import .*;import Win extends Fr

42、ame implements MouseListener,MouseMotionListenerButton button;TextField text;int x,y;boolean move=false;Win()button=new Button("用鼠標(biāo)拖動(dòng)我");text=new TextField("用鼠標(biāo)拖動(dòng)我",8);(this);(this);(this);(this);addMouseMotionListener(this);setLayout(new FlowLayout();add(button);add(text);addWin

43、dowListener(new WindowAdapter()public void windowClosing(WindowEvent e)(0););setBounds(10,10,350,300);setVisible(true);validate();public void mousePressed(MouseEvent e)public void mouseReleased(MouseEvent e)move=false;Rectangle rect=();int x=(int)();int y=(int)();if()if()=button)(false);else if()=te

44、xt)(false);public void mouseEntered(MouseEvent e)public void mouseExited(MouseEvent e)public void mouseClicked(MouseEvent e)public void mouseMoved(MouseEvent e)public void mouseDragged(MouseEvent e)Component com=null;if() instanceof Component)com=(Component)();if(com!=this)move=true;e=(com,e,this);i

45、f(move)x=();y=();int w=().width,h=().height;(x-w/2,y-h/2);public class Testpublic static void main(String args)Win win=new Win();16.進(jìn)一步改進(jìn)本章例子,要求一個(gè)按鈕在移動(dòng)時(shí),不允許和其他按鈕相交。答: import .*;import Win extends Frame implements KeyListenerButton b=new Button8;int x,y;Win()setLayout(new FlowLayout();for(int i=0;i&l

46、t;8;i+)bi=new Button(""+i);bi.addKeyListener(this);add(bi);addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)(0););setBounds(10,10,300,300);setVisible(true);validate();public void keyPressed(KeyEvent e)boolean move=false;Button button=(Button)();Rectangle buttonr

47、ect=();String str=();int xx=(str);x=().x;y=().y;if()=y=y-2;if(y<=0) y=0;else if()=y=y+2;if(y>=300) y=300;else if()=x=x-2;if(x<=0) x=0;else if()=x=x+2;if(x>=300) x=300;(x,y);for(int k=0;k<8;k+)Rectangle rect=bk.getBounds();if(rect)&&(xx!=k)move=true;if(move=false)(x,y);public v

48、oid keyTyped(KeyEvent e)public void keyReleased(KeyEvent e)public class Testpublic static void main(String args)Win win=new Win(); 1. 編寫一個(gè)應(yīng)用程序,用戶可以在一個(gè)文本框里輸入數(shù)字字符,按Enter鍵后將數(shù)字放入一個(gè)文本區(qū)。當(dāng)輸入的數(shù)字大于1000時(shí),彈出一個(gè)有模式的對(duì)話框,提示用戶數(shù)字已經(jīng)大于1000,是否繼續(xù)將該數(shù)字放入文本區(qū)。答: import .*;import WindowSaveNumber extends Frame implements ActionListenerTextField textInputNumber;TextArea textSaveNumber;WindowSaveNumber()textInputNumber=new TextField(15);textSaveNumber=new TextArea();add(textInputNumber,;add(textSaveNumber,;(this);setBounds(100,100,400,300);setV

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論