java课后大题答案_第1页
java课后大题答案_第2页
java课后大题答案_第3页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、弟一早8.编写一个 Java 应用程序,输出全部的希腊字母。 答:public class XLWordspublic static void main(String args)for(int i=913:i<930;i+)System, out. print(char) i+"");for (int j=931;j<938;j+)System, out. print(char)j+"");for (int k=945;k<962;k+)System, out. print(char)k+"");for (int t

2、=963;t<=969;t+)System, out. print(char)t+"");第三章3. 编写应用程序,求 1! +2! +-+10! 答:class Factpublic static void main(String args)int fact, sum=0;for (int i=l:i<=10;i+)fact=l;for(int j=l;j =i;j+)fact* 二 j;sum+=fact;System, out. println("l 到 10 的阶乘之和是 : "+sum);4. 编写一个应用程序,求 100 以内的全

3、部素数。答:class Primespublic static void main(String args)int w=l;for (int i=2;i<=100;i+)for(int j=2;j i;j+)w=i%j;if(w=0)break;if(w!=0)System, out. println(i+ 是素数 );5. 分别用do-while和for循环计算1+1/2! +1/3! +1/4!+的前20项和。答:for循环class Sumpublic static void main(String args)int fact;double sum=0;for(int i 二 1;

4、i =20;i+)fact=l;for (int j=l;j<=i;j+) fact* 二 j;sum+=l. 0/fact;System, out. printin (sum); dowhile 循环class Sumpublic static void main(String args) int i=l;int fact; double sum=0;dofact=l;int j=0;while(+j<=i) fact*=j;sum+=l. 0/fact;while (+i<=20);System, out. printin(sum);编写应用程序6. 一个数如果恰好等于它

5、的因子之和,这个数就称为“完 求 1000 之内的所有完数。答:class Wanshupublic static void main(String args)int x, i, sum;for (x=l;x<=1000;x+)sum=0;for(i=l;i<x;i+)if(x%i=0) sum+=i;if(x=sum)System, out. print In (x+是完数 );7. 编写应用程序,分别使用while和for循环计算8+88+888+前10项之和。答:for循环class TheSumpublic static void main(String args)long

6、 sum=0, data=8;for (int i=l;i<=10;i+) sum=sum+data; data=data*10+8;System, out. printin(sum);while循环class TheSumpublic static void main(String args)long sum=0, data=8, i=0;while(+i<=10)sum=sum+data;data=data*10+8;System, out. printin(sum);8. 编写应用程序,输出满足 1+2+3+?,+n<8888 的最大正整数 n。答:class Maxn

7、public static void main(String args)int k=l, sum=0;while (sum+=k)<8888)k+;k;System, out. printin (" 最大能取至 I : "+k);第四章15. 使用接口有哪些注意事项?模仿例子 4. 27, 编写一个类实现两个接口的程 序。答:一个类使用接口时,要有implements关键字,当一个类使用多个接口 时, 接口名要用逗号“,”隔开;使用接口的类除 abstract 类外,必须实现接 口的所 有方法,并且实现接口的方法时,方法名字、返回类型、参数个数及类 型必须与 接口中的

8、完全一致;类在实现接口时,方法体一定要用 public 修饰, 如果接口方 法的返回类型不是 void 型,在类中实现接口时,方法体至少有一个 return 语句。 in terface表面积 double allArea(double r);interface体积double volu(double r);class Sph implements 表面积,体积double PI=3. 14159;public double allArea(double r)return 4*PI*r*r;public double volu(double r)return 4.0/3*PI*r*r*r;pu

9、blic class Testpublic static void main(String args)double r=5. 0;Sph a=new Sph();System, out. println( z/ 半径为 5 的球的表面积是: +a. all Area (r);System, out. printin (半径为 5 的球的体积是 : +a. volu (r);16. 编写一个类 A, 该类创建的对象可以调用方法 f 输出英文字母表,然后再 编写一个该类的子类B,要求子类B必须继承A类的方法f (不允许重写),子类 创建的对 象不仅可以调用方法 f 输出英文字母表,而且调用子类新增

10、的方法 g 输出希腊字母 表。答: class Aint m;void f ()f or (m=65 ;m<91; m+)System, out. print(char)m+ );for(m=97;m<123;m+)System, out. print (char) in+ );System, out. println( /z );int i;void g()for(i=913;i<930;i+)System, out. print(char)i+"");for(i=931;i<938;i+)System, out. print(char)i+&qu

11、ot;");for(i=945;i<962;i+)System, out. print(char)i+"");for(i=963;i<970;i+)System, out. print(char)i+"");System, out. printin ( z/ ");public class Testpublic static void main(String args)B b=new B ();System, out. printing' 我调用方法 f 输出英文字母表 :") ;b. f 0 ;Syst

12、em, out. printing 我调用方法 g 输出希腊字母表 :") ;b. g();17. 编写一个异常类 MyException, 再编写一个类 Student, 该类有一个产生异常 的方法 public void speak(int m) throws MyException,要求参数 m 的值大于 1000时,方法抛出一个 MyException 对象。最后编写主类,在主类的 main 方法中用 Student 创建一个对象,让该对象调用 speak 方法。答: class MyException extends ExceptionString strl;MyExcep

13、tion(int m)strl=m+" 出现错误 可能造成的原因是取值大于 1000”;public void showStr1()System, out. printin(strl);public void speak(int m) throws MyExceptionif(m>1000)MyException exception=new MyException(m);throw exception;elseSystem, out. println(m);public class Testpublic static void main(String agrs)int m;St

14、udent stul=new Student();m=987;try('stul. speak(m);m=1234;stul. speak (m);catch(MyException e)e. showStrl ();18. 编写一个类,该类有一个方法 public int f (int a, int b), 该方法返回 a 和 b 的最大公约数。然后再编写一个该类的子类,要求子类重写方法 f, 而且重写 的 方法将返回 a 和 b 的最小公倍数 o 要求在重写的方法的方法体中首先调用被 隐藏的方法返回a和b的最大公约数m,然后将乘积(a*b)/m返回。要求在应用程 序的主类 中分别使

15、用父类和子类创建对象,并分别调用方法 f 计算两个正整数 的最大公约 数和最小公倍数。答: 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 A public int f (int a, int b) int m;m=super. f (a, b);return (a*b)/m;public class Testpublic static void main(String a

16、rgs)A a=new A();System, out. printin (/z18 和 102 的最大公约数是: +a. f (18, 102);B b=new B ();System, out. println(zz18 和 102 的最小公倍数是 : +b? f(18, 102);第六章: 星期小1. 用 Data 类不带参数的构造方法创建日期,要求日期的输出格式是 时分秒。答 : import java. util.import java. text. *; class Test public static void main(String args)System, out.Date

17、时间二 new Date ();SimpleDateFormat s=new SimpleDateFormat (/ZE HH 日寸 mm分 ss 秒)printin (s. format (HAlMI);2. 输出 2006 年 2 月的日历页,程序需处理闰年问题。答: import java, util.*;class Testpublic 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

18、allDay=28;Calendar feb=Calendar. getlnstance();feb. set (2006, 1, 1);int dat=feb. get(Calendar. DAY_OF_WEEK)-1;String a=new Stringdat+allDay;for (int i=0;i<dat;i+)ai =;for(int i=dat, n=l;i<(dat+allDay);i+) if (n<=9)ai=String. valueOf (n)+/z ;elseai=String. valueOf (n)+/z ;n+;System, out. pr

19、intln(System, out. printin (z/ +year+ +month+ 月);三四五六 ) ;for(int j=0;j<a. length;j+) if(j%7=0)System, out. println(/z );System, out. print (aj);3. 计算某年、某月、某日和某年、某月、某日之间的天数间隔。要求年、月、 日通过 main 方法的参数传递到程序中。答 : import java, util.*;class Testpublic static void main(String args)Calendar c=Calendar. getl

20、nstance();c. set (2000, 0, 1);long timel=c. getTimelnMillis();c. set (2008, 7, 8);long time2=c. getTimelnMillis();long dayCous=(time2timel)/(1000*60*60*24);System, out. printin( 2008 年 8 月 8 日和 2000 年 1 月 1 日相隔 +dayCous+天);4. 编程练习 Math 类的常用方法。答 : import java. text. *;public class Testpublic static v

21、oid main(String args)double a=Math. abs(-10);System, out. printin ( -10 的绝对值是: +a);double maxNum=Math. max (123. 456, -5. 4321);System, out. printin (zz123. 456 与-5. 4321 中的最大值是 : ,z+maxNum);double minNum=Math. min (123. 456, -5. 4321);System, out. printin (zz123. 456 与-5. 4321 中的最小值是 : , +minNum);i

22、nt randomNum= (int) (Math, random () *10) +1;System, out. printing输出一个 1 到 10 的随机数是 : /z +randomNum);double powNum=Math. pow(2, 10);System, out. print In ( 2 的 10 次幕是: +powNuni);double sqrtNum=Math. sqrt(10);System, out. printin (zz10 的平方根是 : , +sqrtNum);double logNum=Math. log(2);System, out. print

23、ln(zz2 的对数是 : z/ +logNum);double sinNum=Math. sin(-10);System, out. printin ( 一 10 的正弓玄值是 : +sinNuni);double asinNum=Math. asin(0.5);System, out. println(z/0. 5 的反正弓玄值是 : +asinNuni);System, out. printing 格式化之前的数是 : z/ +sqrtNum);NumberFormat f=NumberFormat. getlnstance ();f. setMaximumFractionDigits(

24、10);f. setMinimumlntegerDigits(4);String s=f. format(sqrtNum);System, out. printin( 格式化后 : +s);5. 使用Biginteger 类计算1! +3! +5! +7!+的前30项的和。答: import java. math.public class Testpublic static void main(String args)Biginteger sum=new Biginteger(0) ,jieCheng=new Biginteger( 1 ) ,0NE=new Biginteger(1) ,i=

25、0NE;int k=0;while (+k<=30)sum=sum. add(jieCheng);i=i. add (ONE);jieCheng=jieCheng. multiply(i);i=i. add (ONE);jieCheng=jieCheng. multiply(i);System, out. printin (sum);第七章4. 编写应用程序,有一个标题为“计算的窗口 ”的窗口,窗口的布局为 FlowLayout 布局。窗口中添加两个文本区,当我们在一个文本区中输入若干个数 时,另一个 文本区,同时对输入的数进行求和运算并求出平均值 , 也就是说随 着输入的变化 , 另一

26、个文本区不断地更新求和及平均值。答: import java.awt. *;import java. awt. event. *;import java, util.*;class Calculated extends Frame implements TextListenerTextArea textl, text2; 定义了 2 个文本区Calculated (String s)/ 标题为 "计算的窗口”的窗口super (s);setLayout (new FlowLayout ();窗口布局为 FlowLayout textl=new TextArea(5, 23);text

27、2=new TextArea(5, 23);add (textl);add (text2);text2. setEditable (false) ;/ 显示求和结果和平均值的文本区禁止编辑textl. addTextListener (this); addWindowListener(new WindowAdapter ()public void windowClosing(WindowEvent e)System, exit (0););setBounds (100, 100, 400, 160);setVisible(true);validate();public void textVal

28、ueChanged(TextEvent e)String s=textl. getText ();StringTokenizer geshu=new StringTokenizer(s);int n=geshu. countTokens ();double a=new double n;for (int i=0;i n;i+)String temp=geshu. nextTokenO ;double date=Double. parseDouble(temp);ai=date;double sum=0, average;for (int i=0;i n;i+)sum=sum+ai;averag

29、e=sum/n;text2. setText(null);text2. append ( 和 : +suin+ rT+ 平均数 : /z+average);public class Test public static void main(String args) Calculated calc=newCalculated ( /? 计算的窗口 ");5. 文本区可以使用 getSelectedText 0 方法获取该文本区通过拖动鼠标选中的 文 件。编写应用程序,有一个标题为“挑单词”的窗口,窗口的布局为 BorderLayout 布局。窗口中添加两个文本去和一个按钮组件,要求文本

30、区分别添加到窗口的东部区域和西部区域;按钮添加到窗口的南 部 区域,当单击按钮时,程序将东部区域的文本区中鼠标选中的内容尾加到西 部区 域的文本区中。答: import java. awt. *;import java. awt. event. *;class WindowSelectedText extends Frame implements ActionListenerTextArea textl, text2; / 定义 2 个文本区Button button;/ 定义*个按钮WindowSelectedText (String s)/ 窗口名字为 " 挑单词”super (

31、s);setLayout (new BorderLayout () ; / 窗口布局是 BorderLayout 布局 textl=new TextArea(6, 15);text2=new TextArea(6, 15);button=new Button ( 确定 ) ;add(text1, BorderLayout. EAST);add(text2, BorderLayout. WEST);add (button, BorderLayout. SOUTH);button. addActionListener(this);addWindowLi stener(new WindowAdapt

32、er()public void windowClosing(WindowEvent e)System, exit (0););text2.setEditable(false);setBounds (100, 100, 350, 200); setVisible(true);validate();public void actionPerformed(ActionEvent e) if (e. getSource () =button) String s=textl. getSelectedText()+ n ;String str=text2. getText();text2. setText

33、(str+s);public class Testpublic static void main(String args)new WindowSelectedText ( ,, 挑单词 );6. 编写一个应用程序,有一个标题为“计算”的窗口,窗口的布局为 FlowLayout 布局。设计 4 个按钮,分别命名为“加”、“差”、“积”、 “除”,另外,窗 口中还有 3 个文本框。单击相应的按钮,将两个文本框的数 字做运算,在第三个 文本框中显示结果。要求处理 NumberFormatException 。 答: import java.awt. *;import java. awt. event

34、. *;class Calculated extends Frame implements ActionListenerTextField textl, text2, text3;3 个文本框Button buttonH, buttonC, buttonj, buttons; /4 个按钮Calculated(String s)super(s);setLayout (new FlowLayout () ; /FlowLayout布局textl=new TextField(lO);text2=new TextField(lO);text3=new TextField(17);buttonH=ne

35、w Button( 力口 ) ;buttonC=new Button ( 差 ) ;buttonj=new Button( 积 ) ;buttonS=new Button ( 除 ) ; add(textl);add(text2);add(text3);text3. setEditable (false);add(buttonH); add(buttonC); add(buttonj); add(buttonS);buttonH. addActionListener (this);buttonC. addActionListener(this); buttonj. addActionListe

36、ner(this); buttons. addActionListener(this); addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System, exit (0););setBounds (100, 100, 160, 180);setVisible(true);validate();public void actionPerformed(ActionEvent e)double numl=0, num2=0, totle=0;try(二二 buttonH)numl= Double

37、. parseDouble (textl. getText ();num2= Double. parseDouble (text2. getText (); if (e. getSource () (t o 11e=num1+num2;text3. setText ( z,和 +totle);else if (e. getSource () =buttonC)(t o 11e=num1-num2;text3. setText ( z,差 +totle);else if (e. getSource () =buttonj)(t o 11e=num1*num2;text3. setText (z,

38、积 +totle);else if (e. getSource () =buttonS) t o 11e=num1/num2;text3. setText ( zz 商 +totle); catch(NumberFormatExceptio n eve nt)text3. setText ( /z 请输入数字字符! ) ;public class Testpublic static void main(String args)Calculated calc=new Calculated( /z 计算 ) ;/ 标题为“计算”的窗口7. 改进例子 7. 16, 在程序中增加一个名称为“确定”的按

39、钮和一个文本区。 当 单击按钮时,程序验证用户是否输入了合法的 E-mail 地址格式,如果合法就 将用 户输入的姓名、 E-mail 和职业尾加到文本区中,否则在输入 E-mail 的文本 框中提 示用户输入了非法格式的 E-mail 地址。答: import javax, swing. *;import javax. swing, border. *;import java. awt. *;import java. awt. event.class WindowBox extends Frame implements ActionListenerTextField textl, text2

40、, text3;TextArea textarea;Box baseBox, boxVl, boxV2;Button button;WindowBox ()button=new Button ( 确定 ) ;textarea=new TextArea(6, 12);textl=new TextField(12);text2=new TextField(12);text3=new TextField(12);boxVl=Box. createVerticalBox();boxVl. add (new Label (zz 姓名 ) ;boxVl. add (Box. createVerticalS

41、trut(8); boxVl. add(new Label( email ) ;boxVl. add(Box. createVerticalStrut(8);boxVl. add (new Label (zz 职业 ) ;boxV2=Box. createVerticalBox();boxV2. add (textl);boxV2. add (Box. createVerticalStrut(8); boxV2. add (text2);boxV2. add (Box. createVerticalStrut(8); boxV2. add (text3);baseBox=Box. create

42、HorizontalBox (); baseBox. add (boxVl);baseBox. add(Box. createHorizontalStrut(10); baseBox. add (boxV2);setLayout(new FlowLayout();add (baseBox); add(button); add (textarea); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e)System, exit (0););textarea. setEditable(false

43、); button. addActionListener(this); setBounds (100, 100, 210, 250); setVisible(true);validate();public void actionPerformed(ActionEvent e) boolean a; int b;String s;if (e. getSource ()二二 button)(s=text2. getText ();a=s. endsWith( ? com );b=s. indexOf ( 矿 );if (a&&b>0)Stringstrl=textl. get

44、Text () +n +text2 ? getText () +n +text3 ? getText () + n ;String str2 二 textarea. getText();textarea. setText(str2+strl);elsetext2. setText(/z 输入了非法格式的 E-mail 地址) ;public class Testpublic static void main(String args)new WindowBox ();8. 写一个应用程序,要求编写一个 Panel 的子类 MyPanel, MyPanel 中有一个文 本 框和一个按钮,要求 My

45、Panel 的实例作为其按钮的 ActionEvent 事件的监视 器,当 单击按钮时,程序获取文本框中的文本,并将该文本作为按钮的名称。然后在编写一个Frame 的子类,即窗口。窗口的布局为 BorderLayout 布局。窗口中添加两个 MyPanel 面板,分别添加到窗口的东部 区域和西部区域。答: import java.awt. *;import java. awt. event. *;class MyPanel extends Panel implements ActionListenerString name;TextField text;Button button;MyPane

46、l ()text=new TextField(lO);button=new Button ( 确定 ) ; add(text);add(button);button. addActionListener (this); addWindowLi stener(new WindowAdapter () public void windowClosing(WindowEvent e)System, exit (0);二二 button)public void actionPerformed(ActionEvent e) if (e. getSource () name=text. getText (

47、); button. setLabel(name);class MyFrame extends Frame MyPane1 pane11, pane12;MyFrame () panell=new MyPane 1 (); panel2=new MyPane1();add (panel1, BorderLayout. EAST); add (panel2, BorderLayout. WEST);setBounds (100, 100, 400, 100);setVisible(true); validate(); public class Testpublic static void mai

48、n(String args) MyFrame win=new MyFrame();9. 参照例子 7. 18 编写一个应用程序,要求有一个画布,在画布上绘制一个 矩形 , 用户通过文本框输入矩形的宽和高以及矩形左上角的位置坐标。答: import java.awt. *;import java. awt. event.class Mycanvas extends Canvasint x, y, w, h;Mycanvas ()setBackground(Color, cyan);public void setX(int x) this. x=x; public void setY(int y)

49、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;TextField textl, text2, text3, text4;Button button;WindowCanvas ()canvas=new Mycanvas();textl=ne

50、w 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 pNorth. add(text3);( 矩形的宽 : ) ;pNorth. add (new Label pNorth. add(text4);( 矩形的高 : );p

51、South. add (new Label ( pSouth. add (textl); pSouth. add(text2);/z 左上角位置坐标: );pSouth. add (button);addWindowListener(new WindowAdapter () public void windowClosing(WindowEvent e) System, exit (0););add(canvas, BorderLayout. CENTER); add(pNorth, BorderLayout. NORTH); add (pSouth, BorderLayout. SOUTH)

52、; setBounds (100, 100, 500, 500); setVisible(true);validate();public void actionPerformed(ActionEvent e)int x, y, w, h;try(x=Integer. parselnt (textl. getText (); y=Integer. parselnt (text2. getText ();w=Integer. parselnt (text3. getText (); h=Integer. parselnt (text4. getText (); canvas. setX(x);ca

53、nvas. 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. 编写应用程序,有一个窗口对象,该窗口取它的默认布局: BorderLayout 布 局 , 北面添加一个 List 组件,该组件有四个商品名称的选项。中心添加一个 文本 区,当选择 List 组件中的某个选项后,文本区显示对该商品的价格和产地 当双 击 List 组件中的某个选项后,文本区显示该商品的详细广告。答 : import java. awt. import java. awt. event.class WindowGoods extends Frame implements ActionListener, ItemListener String s = "产地: 北京","产地: 上海","产地: 沈阳","产地: 广东"String p = ""

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论