分享
分销 收藏 举报 申诉 / 33
播放页_导航下方通栏广告

类型java面向对象程序设计课后习题答案耿祥义张跃平主编清华大学出版社.doc

  • 上传人:xrp****65
  • 文档编号:5917596
  • 上传时间:2024-11-23
  • 格式:DOC
  • 页数:33
  • 大小:311KB
  • 下载积分:10 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    java 面向 对象 程序设计 课后 习题 答案 耿祥义张跃平 主编 清华大学出版社
    资源描述:
    习题解答 习题1 1.James Gosling 2.需3个步骤: 1) 用文本编辑器编写源文件。 2) 使用javac编译源文件,得到字节码文件。 3) 使用解释器运行程序。 3.由类构成。不是必须的。 4. path=D:\jdk\bin; set classpath=D:\jdk\jre\lib\rt.jar;.; 5. B 6. Java源文件的扩展名是.java,Java字节码的扩展名是.class。 7.D。 8. A:Speak.java。 B:两个字节码文件,Speak.class和Xiti8.class。 C:java Xiti8。 D:执行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 thread "main" java.lang.NoClassDefFoundError: Xiti8/class 执行java Xiti8得到的输出结果 I'm glad to meet you (4) 9.属于操作题,解答略。 习题2 1. D 2.【代码1】 【代码2】 错误 //【代码3】更正为 float z=6.89F; 3.float型常量后面必须要有后缀“f”或“F”。 对于double常量,后面可以有后缀“d”或“D”,但允许省略该后缀。 4.public class Xiti4{ public static void main (String args[ ]){ char ch1='你',ch2='我',ch3='他'; System.out.println("\""+ch1+"\"的位置:"+(int)ch1); System.out.println("\""+ch2+"\"的位置:"+(int)ch2); System.out.println("\""+ch3+"\"的位置:"+(int)ch3); } } 5.数组名字.length 6.数组名字.length 7. 【代码1】A,65 【代码2】-127 【代码3】 123456.783,123456.78312 8. 【代码1】false 【代码2】true 【代码3】false 【代码4】3 【代码5】4.4 【代码6】8.8 习题3 1. 输出110 if-else语句书写的不够规范,复合语句缺少大括号“{}”,代码不够清晰。 2.你好好酷!! 3. public class Xiti3_3 { public 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=(char)i; //i做char型转换运算,并将结果赋值给c System.out.print(" "+c); if((i-startPosition+1)%10==0) System.out.println(""); } } } 4. public 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); } } 5. class Xiti5 { public static void main(String args[]) { int i,j; for(j=2;j<=100;j++) { for(i=2;i<=j/2;i++) { if(j%i==0) break; } if(i>j/2) { System.out.print(" "+j); } } } } 6. class 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="+sum); } } 7. public class Xiti7 { public static void main(String args[]) { int sum=0,i,j; for(i=1;i<=1000;i++) { for(j=1,sum=0;j<i;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("请输入两个非零正整数,每输入一个数回车确认"); 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(m<n) { temp=m; m=n; n=temp; } int r=m%n; while(r!=0) { n=m; m=r; r=m%n; } gy=n; gb=a*b/gy; System.out.println("最大公约数 :"+gy); System.out.println("最小公倍数 :"+gb); } } 8.方法之二 import java.util.Scanner; public class Xiti8 { public static void main (String args[ ]){ System.out.println("请输入两个非零正整数,每输入一个数回车确认"); Scanner reader=new Scanner(System.in); int m=0,n=0,t=0,gy=0,gb=0; m = reader.nextInt(); n = reader.nextInt(); if(m>n){ t=m; m=n; n=t; } for(int i=1;i<=m;i++){ if(m%i==0 && n%i==0){ gy=i; } } gb=m*n/gy; System.out.println(m+","+n+"的最大公约数为 "+gy); System.out.println(m+","+n+"的最小公倍数为 "+gb); } } 9. public class Xiti9 { public static void main(String args[]) { int n=1; long sum=0,t=1; t=n*t; while(true) { sum=sum+t; if(sum>9999) break; n++; t=n*t; } System.out.println("满足条件的最大整数:"+(n-1)); } }// 1至7的阶乘和是sum=5913.0 // 1至8的阶乘和是sum=46233.0 习题4 1.用该类创建对象时。 2.所谓方法重载是在一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。构造方法可以重载。 3. 可以。不可以。 4.不可以。 5.成员变量又分为实例变量和类变量,用static修饰的变量是类变量。那么类变量和实例变量有什么区别呢?一个类通过使用new运算符可以创建多个不同的对象,不同的对象的实例变量将被分配不同的内存空间;如果类中的成员变量有类变量,那么所有对象的这个类变量都分配给相同的一处内存,改变其中一个对象的这个类变量会影响其它对象的这个类变量。也就是说对象共享类变量。 6.C,D 7.【代码1】,【代码4】 8.sum=-100 9.27 10. **20 ##100 习题5 1. 如果子类和父类在同一个包中,那么子类自然地继承了其父类中不是private的成员变量作为自己的成员变量,并且也自然地继承了父类中不是private的方法作为自己的方法。继承的成员或方法的访问权限保持不变。如果子类和父类不在同一个包中,那么子类继承了父类的protected、public成员变量做为子类的成员变量,并且继承了父类的protected、public方法为子类的方法,继承的成员或方法的访问权限保持不变。如果子类和父类不在同一个包里,子类不能继承父类的友好变量和友好方法。 只要子类中声明的成员变量和父类中的成员变量同名时,子类就隐藏了继承的成员变量。 子类中定义一个方法,这个方法的类型和父类的方法的类型一致或者是父类的方法的类型的子类型,并且这个方法的名字、参数个数、参数的类型和父类的方法完全相同,子类如此定义的方法称作子类重写的方法。子类通过方法的重写可以隐藏继承的方法。 2.不可以。 3.abstract类。 4.假设B类是A类子类或间接子类,当我们用子类B创建一个对象,并把这个对象的引用放到A类的对象中时,称这个A类对象是子类对象的上转型对象。 5.可以把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量中。那么该接口变量就可以调用被类实现的接口中的方法。 6.A,C,D 7.15.0 8.0 8.98.0 12 9. class A { public final void f() { char cStart='a',cEnd='z'; for(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(); } } 10. class A { public int f(int a,int b){ if(b<a) { int temp=0; temp=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.println("最小公倍数 :"+b.f(36,24)); } } 习题6 1.仍然有效。 2.可以。 3.不可以。 4.大家好,祝工作顺利! 5. 96 乘数超过99 习题7 1. (1)Strategy是接口。 (2)Army不是抽象类。 (3)Army和Strategy是关联关系。 (4)StrategyA, StrategyB、StrategyC与Strategy是实现关系。 Animal +cry():void + getAnimalName():String Dog +cry():void + getAnimalName():String Simulator + playSound(Animal ): void Cat +cry():void + getAnimalName():String 第5章的例子13的UML类图 2. 3. <<interface>> Advertisement + showAdvertisement():void + getCorpName():String AdvertisementBoard + show(Advertisement adver): void 第5章的例子17的UML类图 PhilipsCorp + showAdvertisement():void + getCorpName():String LenovoCorp + showAdvertisement():void + getCorpName():String 4.例子13的设计符合开-闭原则。 5.例子17的设计符合开-闭原则。 习题8 1. 采用新增的策略为选手计算得分。 增加新的具体策略StrategyFour。StrategyFour类将double computeScore(double [] a)方法实现为去掉数组a的元素中的一个最大值和一个最小值,然后计算剩余元素的几何平均值。 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;i<a.length-1;i++) { multi=multi*a[i]; } score=Math.pow(multi,1.0/n); return score; } } 2. (1)策略(Strategy)PrintCharacter.java public 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;i<a.length;i++) { System.out.print(a[i]+","); } for(int i=0;i<b.length;i++) { System.out.print(b[i]+","); } System.out.println(""); } } PrintStrategyTwo.java public class PrintStrategyTwo implements PrintCharacter { public void printTable(char [] a,char[] b) { for(int i=0;i<a.length;i++) { System.out.print(b[i]+","+a[i]+","); } } } (3)上下文 PrintGame.java public class PrintGame { PrintCharacter 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 char[26]; char [] b=new char[26]; for(int i=0;i<=25;i++){ a[i]=(char)('a'+i); } for(int i=0;i<=25;i++){ b[i]=(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("方案2:"); game.getPersonScore(a,b); } } 3.参照本章8.3.3自主完成。 习题9 1.A,B,D 2. Love:Game 3.13 abc夏日 4.13579 5.9javaHello 6. public 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.toLowerCase(); System.out.println("字符串中的大写字母变成小写是这个样子: "+s2); s3=s1.concat(s2); System.out.println("大写字符串连接小写字符串是这个样子: "+s3); } } 7. class 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); } } 8. import java.util.*; 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 String[42]; System.out.println(" 日 一 二 三 四 五 六"); Calendar rili=Calendar.getInstance(); rili.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)) dayAmount=29; else dayAmount=28; for(int i=0;i<星期几;i++) day[i]=""; for(int i=星期几,n=1;i<星期几+dayAmount;i++){ if(n<=9) day[i]=String.valueOf(n)+" " ; else day[i]=String.valueOf(n); n++; } for(int i=星期几+dayAmount;i<42;i++) day[i]=""; for(int i=0;i<星期几;i++) { day[i]="**"; } for(int i=0;i<day.length;i++) { if(i%7==0) { System.out.println(""); } System.out.print(" "+day[i]); } } } 9. import 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.out.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.getTimeInMillis(); long 相隔天数=Math.abs((timeYear1-timeYear2)/(1000*60*60*24)); System.out.println(""+year1+"年"+month1+"月"+day1+"日和"+ year2+"年"+month2+"月"+day2+"日相隔"+相隔天数+"天"); } } 10. public 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); System.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); } } 习题10 1.BorderLayout布局。 2.不可以。 3.A,C。 4. import 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; double 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(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 double[n]; for(int i=0;i<=n-1;i++) { String temp=fenxi.nextToken(); try { a[i]=Double.parseDouble(temp); sum=sum+a[i]; } catch(Exception ee) { count--; } } aver=sum/count; text2.setText(null); text2.append("\n和:"+sum);
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:java面向对象程序设计课后习题答案耿祥义张跃平主编清华大学出版社.doc
    链接地址:https://www.zixin.com.cn/doc/5917596.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork