《Java面向对象程序设计》(第2版)课后答案.docx

上传人:飞****2 文档编号:13759036 上传时间:2022-05-01 格式:DOCX 页数:44 大小:37.10KB
返回 下载 相关 举报
《Java面向对象程序设计》(第2版)课后答案.docx_第1页
第1页 / 共44页
《Java面向对象程序设计》(第2版)课后答案.docx_第2页
第2页 / 共44页
点击查看更多>>
资源描述

《《Java面向对象程序设计》(第2版)课后答案.docx》由会员分享,可在线阅读,更多相关《《Java面向对象程序设计》(第2版)课后答案.docx(44页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上Java面向对象程序设计(编著 耿祥义 张跃平)习题11James Gosling 2(1)使用一个文本编辑器编写源文件。(2)使用Java编译器(javac.exe)编译Java源程序,得到字节码文件。(3)使用Java解释器(java.exe)运行Java程序3Java的源文件是由若干个书写形式互相独立的类组成的。应用程序中可以没有public类,若有的话至多可以有一个public类。4系统环境path Djdkbin;系统环境classpath Djdkjrelibrt.jar;.;5 B6 Java源文件的扩展名是.java。Java字节码的扩展名是.clas

2、s。 7 D8(1)Speak.java(2)生成两个字节码文件,这些字节码文件的名字Speak.class 和 Xiti8.class(3)java Xiti8(4)执行java Speak的错误提示Exception in thread main java.lang.NoSuchMethodError: main执行java xiti8得到的错误提示Exception in thread main java.lang.NoClassDefFoundError: xiti8 (wrong name: Xiti8)执行java Xiti8.class得到的错误提示Exception in th

3、read main java.lang.NoClassDefFoundError: Xiti8/class执行java Xiti8得到的输出结果Im glad to meet you9属于操作题,解答略。习题21 D2【代码1】 【代码2】 错误 /【代码3】更正为 float z=6.89F; 3float型常量后面必须要有后缀“f”或“F”。对于double常量,后面可以有后缀“d”或“D”,但允许省略该后缀。4public class Xiti4 public static void main (String args ) char ch1=你,ch2=我,ch3=他; System.o

4、ut.println(+ch1+的位置:+(int)ch1); System.out.println(+ch2+的位置:+(int)ch2); System.out.println(+ch3+的位置:+(int)ch3); 5数组名字.length6数组名字.length7 【代码1】A,65【代码2】-127【代码3】 .783,.783128【代码1】false【代码2】true【代码3】false【代码4】3【代码5】4.4【代码6】8.8习题3输出110if-else语句书写的不够规范,复合语句缺少大括号“”,代码不够清晰。2你好好酷!3public class Xiti3_3 pub

5、lic static void main (String args ) int startPosition=0,endPosition=0; char cStart=,cEnd=; startPosition=(int)cStart; /cStart做int型转换据运算,并将结果赋值给startPosition endPosition=(int)cEnd ; /cEnd做int型转换运算,并将结果赋值给endPosition System.out.println(俄文字母表:); for(int i=startPosition;i=endPosition;i+) char c=0; c=(ch

6、ar)i; /i做char型转换运算,并将结果赋值给c System.out.print( +c); if(i-startPosition+1)%10=0) System.out.println(); 4public class Xiti4 public static void main(String args) double sum=0,a=1;int i=1; while(i=20) sum=sum+a; i+; a=a*i; System.out.println(sum=+sum); 5class Xiti5 public static void main(String args) in

7、t i,j; for(j=2;j=100;j+) for(i=2;ij/2) System.out.print( +j); 6class Xiti6 public static void main(String args) double sum=0,a=1,i=1; while(i=20) sum=sum+a; i+; a=(1.0/i)*a; System.out.println(使用while循环计算的sum=+sum); for(sum=0,i=1,a=1;i=20;i+) a=a*(1.0/i); sum=sum+a; System.out.println(使用for循环计算的sum=

8、+sum); 7public class Xiti7 public static void main(String args) int sum=0,i,j; for(i=1;i=1000;i+) for(j=1,sum=0;ji;j+) if(i%j=0) sum=sum+j; if(sum=i) System.out.println(完数:+i); 8方法之一import java.util.Scanner;public class Xiti8 public static void main (String args ) System.out.println(请输入两个非零正整数,每输入一个

9、数回车确认); Scanner reader=new Scanner(System.in); int m=0,n=0,temp=0,gy=0,gb=0,a,b; a=m = reader.nextInt(); b=n = reader.nextInt(); if(mn) t=m; m=n; n=t; for(int i=1;i9999) break; n+; t=n*t; System.out.println(满足条件的最大整数:+(n-1); / 1至7的阶乘和是sum=5913.0 / 1至8的阶乘和是sum=46233.0习题41用该类创建对象时。2所谓方法重载是在一个类中可以有多个方法

10、具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。构造方法可以重载。3 可以。不可以。4不可以。5成员变量又分为实例变量和类变量,用static修饰的变量是类变量。那么类变量和实例变量有什么区别呢?一个类通过使用new运算符可以创建多个不同的对象,不同的对象的实例变量将被分配不同的内存空间;如果类中的成员变量有类变量,那么所有对象的这个类变量都分配给相同的一处内存,改变其中一个对象的这个类变量会影响其它对象的这个类变量。也就是说对象共享类变量。6C,D7【代码1】,【代码4】8sum=-10092710. *20#100习题51 如果子类和父类在同一个包中

11、,那么子类自然地继承了其父类中不是private的成员变量作为自己的成员变量,并且也自然地继承了父类中不是private的方法作为自己的方法。继承的成员或方法的访问权限保持不变。如果子类和父类不在同一个包中,那么子类继承了父类的protected、public成员变量做为子类的成员变量,并且继承了父类的protected、public方法为子类的方法,继承的成员或方法的访问权限保持不变。如果子类和父类不在同一个包里,子类不能继承父类的友好变量和友好方法。只要子类中声明的成员变量和父类中的成员变量同名时,子类就隐藏了继承的成员变量。子类中定义一个方法,这个方法的类型和父类的方法的类型一致或者是父

12、类的方法的类型的子类型,并且这个方法的名字、参数个数、参数的类型和父类的方法完全相同,子类如此定义的方法称作子类重写的方法。子类通过方法的重写可以隐藏继承的方法。2不可以。3abstract类。4假设B类是A类子类或间接子类,当我们用子类B创建一个对象,并把这个对象的引用放到A类的对象中时,称这个A类对象是子类对象的上转型对象。5可以把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量中。那么该接口变量就可以调用被类实现的接口中的方法。6A,C,D715.08.0898.0129class A public final void f() char cStart=a,cEnd=z; for

13、(char c=cStart;c=cEnd;c+) System.out.print( +c); class B extends A public void g() char cStart=,cEnd=; for(char c=cStart;c=cEnd;c+) System.out.print( +c); public class Xiti9 public static void main (String args ) B b=new B(); b.f(); b.g(); 10class A public int f(int a,int b) if(ba) int temp=0; temp=

14、a; a=b; b=temp; int r=b%a; while(r!=0) b=a; a=r; r=b%a; return a; class B extends A public int f(int a,int b) int division=super.f(a,b); return (a*b)/division; public class Xiti10 public static void main (String args ) A a=new A(); B b=new B(); System.out.println(最大公约数 :+a.f(36,24); System.out.print

15、ln(最小公倍数 :+b.f(36,24); 习题61仍然有效。2可以。3不可以。4大家好,祝工作顺利!5 96乘数超过99习题71(1)Strategy是接口。(2)Army不是抽象类。(3)Army和Strategy是关联关系。(4)StrategyA, StrategyB、StrategyC与Strategy是实现关系。234例子13的设计符合开-闭原则。5例子17的设计符合开-闭原则。习题8采用新增的策略为选手计算得分。增加新的具体策略StrategyFour。StrategyFour类将double computeScore(double a)方法实现为去掉数组a的元素中的一个最大值

16、和一个最小值,然后计算剩余元素的几何平均值。import java.util.Arrays;public class StrategyFour implements ComputableStrategy public double computeScore(double a) if(a.length=2) return 0; double score=0,multi=1; Arrays.sort(a); int n=a.length-2; for(int i=1;ia.length-1;i+) multi=multi*ai; score=Math.pow(multi,1.0/n); retur

17、n score; 2(1)策略(Strategy)PrintCharacter.javapublic interface PrintCharacter public abstract void printTable(char a,char b);(2) 具体策略 PrintStrategyOne.java public class PrintStrategyOne implements PrintCharacter public void printTable(char a,char b) for(int i=0;ia.length;i+) System.out.print(ai+,); fo

18、r(int i=0;ib.length;i+) System.out.print(bi+,); System.out.println(); PrintStrategyTwo.javapublic class PrintStrategyTwo implements PrintCharacter public void printTable(char a,char b) for(int i=0;ia.length;i+) System.out.print(bi+,+ai+,); (3)上下文 PrintGame.java public class PrintGame PrintCharacter

19、strategy; public void setStrategy(PrintCharacter strategy) this.strategy=strategy; public void getPersonScore(char a,char b) if(strategy=null) System.out.println(sorry!); else strategy.printTable(a,b); 应用以上策略:public class Application public static void main(String args) char a=new char26; char b=new

20、 char26; for(int i=0;i=25;i+) ai=(char)(a+i); for(int i=0;i=25;i+) bi=(char)(A+i); PrintGame game=new PrintGame(); /上下文对象 game.setStrategy(new PrintStrategyOne(); /上下文对象使用策略一 System.out.println(方案1:); game.getPersonScore(a,b); game.setStrategy(new PrintStrategyTwo(); /上下文对象使用策略二 System.out.println(方

21、案2:); game.getPersonScore(a,b); 3参照本章8.3.3自主完成。习题91A,B,D 2 Love:Game313abc夏日41357959javaHello6public class Xiti6 public static void main (String args ) String s1,s2,s3,t1=ABCDabcd; System.out.println(字符串原来是这个样子: +t1); s1=t1.toUpperCase(); System.out.println(字符串中的小写字母变成大写是这个样子: +s1); s2=t1.toLowerCas

22、e(); System.out.println(字符串中的大写字母变成小写是这个样子: +s2); s3=s1.concat(s2); System.out.println(大写字符串连接小写字符串是这个样子: +s3); 7class Xiti7 public static void main(String args ) String s =中华人民共和国; char a=s.charAt(0); char b=s.charAt(6); System.out.println(第一个字符: +a); System.out.println(最后一个字符: +b); 8import java.ut

23、il.*;class Xiti8 public static void main(String args) int year,month; System.out.println(请输入年份和月份,每输入一个数回车确认); Scanner reader=new Scanner(System.in); year= reader.nextInt(); month= reader.nextInt(); String day=new String42; System.out.println( 日 一 二 三 四 五 六); Calendar rili=Calendar.getInstance(); ri

24、li.set(year,month-1,1);/将日历翻到year年month月1日,注意0表示一月.11表示十二月 int 星期几=rili.get(Calendar.DAY_OF_WEEK)-1; int dayAmount=0; if(month=1|month=3|month=5|month=7|month=8|month=10|month=12) dayAmount=31; if(month=4|month=6|month=9|month=11) dayAmount=30; if(month=2) if(year%4=0)&(year%100!=0)|(year%400=0) day

25、Amount=29; else dayAmount=28; for(int i=0;i星期几;i+) dayi=; for(int i=星期几,n=1;i星期几+dayAmount;i+) if(n=9) dayi=String.valueOf(n)+ ; else dayi=String.valueOf(n); n+; for(int i=星期几+dayAmount;i42;i+) dayi=; for(int i=0;i星期几;i+) dayi=*; for(int i=0;iday.length;i+) if(i%7=0) System.out.println(); System.out

26、.print( +dayi); 9import java.util.*;class Xiti9 public static void main(String args) int year1,month1,day1,year2,month2,day2; Scanner reader=new Scanner(System.in); System.out.println(请输入第一个日期的年份 月份 日期 ,每输入一个数回车确认); year1= reader.nextInt(); month1= reader.nextInt(); day1= reader.nextInt(); System.ou

27、t.println(请输入第二个日期的年份 月份 日期 ,每输入一个数回车确认); year2= reader.nextInt(); month2= reader.nextInt(); day2= reader.nextInt(); Calendar calendar=Calendar.getInstance(); calendar.set(year1,month1,day1); long timeYear1=calendar.getTimeInMillis(); calendar.set(year2,month2,day2); long timeYear2=calendar.getTimeI

28、nMillis(); long 相隔天数=Math.abs(timeYear1-timeYear2)/(1000*60*60*24); System.out.println(+year1+年+month1+月+day1+日和+ year2+年+month2+月+day2+日相隔+相隔天数+天); 10public class Xiti10 public static void main(String args) double a=0,b=0,c=0; a=12; b=24; c=Math.max(a,b); System.out.println(c); c=Math.min(a,b); Sys

29、tem.out.println(c); c=Math.pow(2,3); System.out.println(c); c=Math.abs(-0.123); System.out.println(c); c=Math.asin(0.56); System.out.println(c); c=Math.cos(3.14); System.out.println(c); c=Math.exp(1); System.out.println(c); c=Math.log(8); System.out.println(c); 习题101BorderLayout布局。2不可以。3A,C。4import

30、java.util.StringTokenizer;import java.awt.*;import java.awt.event.*; import javax.swing.*;public class Xiti4 public static void main(String args) ComputerFrame fr=new ComputerFrame(); fr.setTitle(计算的窗口); class ComputerFrame extends JFrame implements TextListener TextArea text1,text2; int count=1; do

31、uble sum=0,aver=0; public ComputerFrame() setLayout(new FlowLayout(); text1=new TextArea(6,20); text2=new TextArea(6,20); add(text1); add(text2); text2.setEditable(false); text1.addTextListener(this); setSize(300,320); setVisible(true); addWindowListener(new WindowAdapter() public void windowClosing

32、(WindowEvent e) System.exit(0); ); validate(); public void textValueChanged(TextEvent e) String s=text1.getText(); sum=0; aver=0; StringTokenizer fenxi=new StringTokenizer(s, ,n); int n=fenxi.countTokens(); count=n; double a=new doublen; for(int i=0;i=n-1;i+) String temp=fenxi.nextToken(); try ai=Do

33、uble.parseDouble(temp); sum=sum+ai; catch(Exception ee) count-; aver=sum/count; text2.setText(null); text2.append(n和:+sum); text2.append(n平均值:+aver); 5import java.applet.*;import java.awt.*;import java.awt.event.*; public class Xiti5 public static void main(String args) ComputerFrame fr=new ComputerFrame(); fr.setTitle(计算); class ComputerFrame extends Frame implements ActionListener TextField text1,text2,text3; Button button1,button2,button3,b

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁