Java程序设计教程(第2版)课后习题及答案05课后习题.docx

上传人:太** 文档编号:95555760 上传时间:2023-08-25 格式:DOCX 页数:16 大小:21.91KB
返回 下载 相关 举报
Java程序设计教程(第2版)课后习题及答案05课后习题.docx_第1页
第1页 / 共16页
Java程序设计教程(第2版)课后习题及答案05课后习题.docx_第2页
第2页 / 共16页
点击查看更多>>
资源描述

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

1、第5章课后习题参考答案1 .面向对象技术有哪几个特征?答:面向对象技术有三个特征,分别是数据封装(类)、继承和多态。2 .什么是数据封装?答:封装(Encapsulation),就是把对象的属性和行为结合成一个相对独立的单位,并尽可能隐 蔽对象的内部细节。封装有两个含义,一是把抽象出的对象的属性和行为结合在一起,形成一个 不可分割的独立单位,二是尽可能隐蔽对象的内部细节,对外形成一道屏障,对类的属性和行为 起到保护作用,但要提供类的内部与外部的信息交流的适当接口。3 .什么是构造方法?构造方法有什么作用?答:构造方法是类中的方法,但与一般的方法定义有所不同。构造方法没有类型,没有返回值, 方法

2、名与所在类的类名相同,参数和方法体与一般的方法定义一样,可以重载,多数情况下访问 权限定义为public,以便在类外可以创建该类的对象。4 .什么是访问权限?叙述每种访问权限的作用。答:访问权限是指对对象中成员访问的限制。通过设定访问权限,能够或不能够访问某些成 员,从而对成员起到保护作用。Java中有三个访问限定词,分别是private (私有的)、protected (保护的)和public (公有的)。访问限定词放在域或方法前,就可以设定域或方法的访问权限。 域或方法名前面可以没有限定词,如果没有访问限定词,则该域或方法的访问权限是默认的或友 好的。私有的域或方法只能被其所在类的方法访问

3、或调用,在类体之外不能通过对象名直接访问。 私有域或方法具有最高的保护权限。公有成员在程序的任何地方都可以被访问。保护的成员可以 被所在类的其他方法访问;被子类继承后,可以被子类中的其他方法直接访问;在同一个包中, 可以通过对象名直接访问;不是同一包中的非子类,不能通过对象名直接访问。默认访问权限的 域或方法可以被类中的其他方法直接访问;在这个类所在的包中,可以在类体之外通过对象名直 接访问。5 .设计一个学生类,学生信息有身份证号、学号、专业、姓名、性别、年龄及数学、英语、Java 程序设计三门课程的成绩。创建学生类的对象并输出对象的信息。答:import java.util.*;publi

4、c class exercise05_05public static void main(String | args)(int id;String code;String profession;String name;String sex;int age;int math;fr.output();fr.div(frl);fr.output();class Fraction (int numerator,denominator;public Fraction() public Fraction(int n,int d) (numerator=n;denominator=d; )public Fr

5、action add(Fraction f) (int a,b,t;a=denominator*f.denominator;b=numerator*f.denominator+f.numerator*denominator; t=common_divisor(a,b);numerator二b/t;denominator=a/t; return this;) public Fraction sub(Fraction f) (int a,b,t;a=denominator*f.denominator;b=numerator*f.denominator-f.numerator*denominator

6、; t=common_divisor(a,b);numerator二b/t;denominator=a/t; return this;) public Fraction mul(Fraction f) (int a,b,t;b=numerator*f.numerator;a=denominator*f.denominator;t=common_divisor(a,b);numerator=b/t;denominator=a/t;return this;)public Fraction div(Fraction f) (int a,b,t;b=numerator*f.denominator;a=

7、denominator*f.numerator;t=common_divisor(a,b);numerator=b/t;denominator=a/t;return this;)public void output() (System.out.printf(%d/%d)n,numerator,denominator);) private int common_divisor(int a,int b) (int t,al,bl; if(ab) (al=b;bl=a;) else (al=a;bl=b;)while(bl%al!=O)(t=bl;bl=al;al=t%bl;) return al;

8、)11 .设计一个复数类,复数类的实部和虚部都是实型数,类中定义方法能对复数进行加法、减法 和乘法运算。定义复数类的对象、运算并输出结果。答:import java.util.*;import java.lang.Math;public class exerciseO5_l 1(public static void main(Stringf args)(Plural pl,p2;Scanner reader=new Scanner(System.in);int r,v;r=reader.nextlnt();v=reader.nextlnt();pl=new Plural(r,v);reader

9、. nextlnt();v=reader.nextlnt();p2=new PIural(r,v);/* pl.add(p2);pl.output();pl.sub(p2);pl.output。;*/pl.mul(p2);pl.output();class Plural(int real,virtual;public Plural() public Plural(int r,int v) (real=r;viilual=v;)public Plural add(Plural p) (real+=p.real;virtual+=p.virtual;return this;)public Plur

10、al sub(Plural p) (real-=p.real;virtual-=p.virtual;return this;)public Plural mul(Plural p)int a,b;a=real*p.real-virtual*p. virtual;b=real*p.virtual+virtual*p.real;real=a;virtual=b;return this;) public void output()(System.out.printf(H(%d,%d)nn,real,virtual);)12 .求1000以内的所有完数。完数是指一个整数的所有因子之和等于该数本身,如6

11、=1+2+3。答:第3章出现了该题import java.util.*;public class exercise05_12 (public static void main(String args)(int i,j;for(i=2; i=1000; i+) (int a=i,sum=0;for(j=l;jv=a/2;j+) (if(a%j=O) sum十二j;)if(a=sum)System.out.println(a);)13 .找出所有的水仙花数。所谓水仙花数是一个三位数,其各位数的三次方和与该数相等,如 153是一个水仙花数,因为153=l3+53+33o答:import java.u

12、til.*;import java.lang.Math;public class exercise05_13public static void main(String args) int i,al,a2,a3,t;Scanner reader=new Scanner(System.in);for(i=100; i1000; i+) (al=i/100;a2=i/10%10;a3=i%10;t=al*al*al+a2*a2*a2+a3*a3*a3;System.out.println(i);)14 .设计一个矩阵类,类中的方法能够对矩阵进行加法、减法和乘法运算。定义矩阵类的对象并 输出结果。答

13、:import java.util.*;public class exercise05_14public static void main(String args)(int n,m,k,ll;Scanner reader=new Scanner(System.in);Matrix ml,m2,m3;n=reader.nextlnt();m=reader.nextlnt();k=reader.nextlnt();ll=reader.nextlnt();intdl,d2;dl=new intnm|;d2=new intfmk;for(int i=0; in; i+)for(int j=0; jm;

14、 j+)dli|j =reader.nextlnt();ml二new Matrix(n,m,dl);for(int i=0; ik; i+)for(int j=0; jll; j+)d2ij=reader.nextlnt();m2=new Matrix(k,ll,d2);/*ml.add(m2);ml.output();ml.sub(m2);ml.output。;*/ m3=ml.mul(m2); m3.output();)class Matrix(int n,m;int data;public Matrix() public Matrix(int n,int m,int d)(this.n=

15、n;this.m=m;data=d;)public Matrix add(Matrix mx)(if(n!=mx.n|m!=mx.m)(System.out.println(ncan,t add.); return this;)for(int i=0; in; i+)for(int j=0; jm; j+) dataifj+=mx.dataij;return this;)public Matrix sub(Matrix mx)(if(n!=mx.n|m!=mx.m)(System.out.println(ncant sub.); return this;)for(int i=0; in; i+

16、)for(int j=0; jm; j+) dataijmx.dataij;return this;)public Matrix mul(Matrix mx)Matrix newM;int d=new intnmx.m;newM=new Matrix(n,mx.m,d);if(m!=mx.n)System.out.println(ncant mul.);return newM;)int t;for(int i=0; in; i+)for(int j=0; jmx.m; j+)(for(int k=0; km; k+) newM.datai j +=datai k *mx.datak j ;)

17、return newM;)public void output()(for(int i=0; in; i+)(for(int j=0; jm; j+)(System.out.printf(n%5dH,dataij);)System.out.printlnO;int english;int java;Scanner reader=new Scanner(System.in);id=reader.nextlnt();code=reader.next();profession二reader, next。;name=reader.next();sex=reader.next();age=reader.

18、nextlnt();math=reader.nextlnt();english=reader.nextlnt();java=reader.nextlnt();Student stu=new Student(id,code,profession,name,sex,age,math,english,java);stu.output();)class Studentint id;String code;String profession;String name;String sex;int age;int math;int english;int java;public Student() publ

19、ic Student(int id,String code,String profession,String name,String sex,int age,int math,int english,int java)(this.id=id;this, code二code;this.profession=profession;this.name=name;this.sex=sex;this.age二age;this, math=math;this.english=english;this.java=java;)public void output()System.out.println(nid

20、=n+id);System.out.println(code=n-i-code);System.out.println(nprofession=n+profession);System.out.println(,name=,+name);System.out.println(sex=n+sex);System.out.println(Hage=n+age);System.out.println(,math=,+math);System.out.println(nenglish=n+english);System.out.println(njava=n4-java);)6 .设计一个教师类,教师

21、信息有身份证号、教师号、专业、姓名、性别、年龄及授课的学时数。 创建教师类的对象并输出对象的信息。答:import java.utiL*;public class exercise05_06(public static void main(String args)(int id;String code;String profession;String name;String sex;int age;int times;Scanner reader二new Scanner(System.in);id=reader.nextlnt();code=reader.next();profession=r

22、eader. next();name=reader.next();sex=reader.next();age=reader.nextlnt();times=reader.nextlnt();Teacher teacher=new Teacher(id,code,profession,name,sex,age,times);teacher.output();)class Teacherint id;String code;String profession;String name;String sex;int age;int times;public Teacher() public Teach

23、er(int id,String code,String profession,String name,String sex,int age,int times ) (this.id=id;this, code=code;this, profession二profession;this.name=name;this.sex=sex;this.age=age;this, times=times;)public void output()(System.out.println(nid=n+id);System.out.println(,code=,+code);System.out.println

24、(nprofession=n4-profession);System.out.println(,name=,+name);System.out.println(nsex=u+sex);System.out.println(nage=n4-age);Sy s tem.out .println(H times=+times);7 .设计一个线段类,每一个线段用两个端点的坐标表示,类中定义计算线段长度的方法、对线 段进行平移的方法和对线段绕原点旋转的方法。定义线段类对象并进行相应的操作。答:import java.util.*;import java.lang.Math;public class e

25、xercise05_07public static void main(String args)Line In;Scanner reader二new Scanner(System.in); double x 1 ,y 1 ,x2,y2,tx,ty,theta;x 1 =reader.nextDouble();y 1 =reader.nextDouble();x2=reader.nextDouble();y2=reader.nextDouble();In二new Line(xl,yl,x2,y2);tx=reader.nextDouble();ty=reader.nextDouble();ln.

26、Move(tx,ty);ln.output();theta=reader.nextDouble();In.Rotate(theta);ln.output();)class Line(double sx,sy,ex,ey;public Line() public Line(double xl,double yl,double x2,double y2) (sx=xl;sy=yl;ex=x2;ey=y2;)public double computeLength()(double a,b;a=sx-ex;b=sy-ey;return Math.sqrt(a*a+b*b);)public Line M

27、ove(double x,double y)(sx+二 X;sy+二 y;ex十二x;ey+=y;return this;)public Line Rotate(double angle)(double nx,ny;nx=sx*Math.cos(angle)-sy*Math.sin(angle);ny=sx*Math.sin(angle)+sy*Math.cos(angle);sx=nx;sy=ny;nx=ex*Math.cos(angle)-ey*Math.sin(angle);ny=ex*Math.sin(angle)+eyMath.cos(angle);ex=nx;ey=ny;retur

28、n this;)public void output()(System.out.printf(H(%f,%f),(%f,%f)n,sx,sy,ex,ey);)8 .设计一个自然数类,该类的对象能表示一个自然数。类中定义方法能计算1到这个自然数的 各个数之和,能够判断该自然数是否是素数。定义自然数的对象并进行相应的操作。答:import java.util.*;public class exercise05_08(public static void main(String args)(int n;Scanner reader=new Scanner(System.in);n=reader.ne

29、xtlnt();NaturalN na=new NaturalN(n);System.out.println(,sum=n+na.getSum();System.out.printf(n%d is prime? %bnu,na.getN(),na.isPrime();)class NaturalN(int n;public NaturalN() public NaturalN(int n)(this.n=n;)public int getN()(return n;)public boolean isPrime()(for(int i=2; iMath.sqrt(n); i+)if(n%i=0)

30、return false;return true;)public long getSum() (long sum=0;for(int i=l; i=n; i+) sum+=i;return sum;) )9 .设计一个三角形类,每一个三角形由三个顶点的坐标表示。类中定义方法能计算三角形的周 长和面积,能对三角形进行平移和绕原点旋转。定义三角形类的对象并进行相应的操作。答:import java.util.*;import java.lang.Math;public class exercise05_09 (public static void main(String args)(Triangl

31、e tr;Scanner reader二new Scanner(System.in);double x 1 ,y 1 ,x2,y2,x3,y3,tx,ty,theta;x 1 =reader.nextDouble();yl=reader.nextDouble();x2=reader.nextDouble();y2=reader.nextDoub!e();x3=reader.nextDouble();y3=reader.nextDouble();tr=new Triangle(x 1 ,y I,x2,y2,x3,y3);tx=reader.nextDouble();ty=reader.nextD

32、ouble();tr.Move(tx,ty);tr.output();theta=reader.nextDouble();tr.Rotate(theta);tr.output();class Triangledouble sx,sy,mx,my,ex,ey;public Triangle() public Triangle(double xl,double yl,double x2,double y2,double x3,double y3) (sx=x1;sy=y 1;mx=x2;my=y2;ex=x3;ey=y3;)public double computePerimeter()(doub

33、le a,b,c,tx,ty;tx=sx-mx;ty=sy-my;a=Math. sqrt(tx*tx+ty*ty);tx=ex-mx;ty=ey-my;b=Math.sqrt(tx*tx+ty*ty);tx=sx-ex;ty=sy-ey;c=Math.sqrt(tx*tx+ty*ty);return a+b+c;)public double computeArea()(double s;s=(sx*my_sx*ey+mx*ey_mx*sy+ex*sy_mx*my);return s;)public Triangle Move(double x,double y)(sx+=x;sy+二 y;m

34、x十二x;my+=y;ex+=x;ey+=y;return this;)public Triangle Rotate(double angle)double nx,ny;nx=sx*Math.cos(angle)-sy*Math.sin(angle);ny=sx*Math.sin(angle)+sy*Math.cos(angle);sx=nx;sy=ny;nx=mx*Math.cos(angle)-my*Math.sin(angle);ny=mx*Math.sin(angle)+my*Math.cos(angle);mx=nx;my=ny;nx=ex*Math.cos(angle)-ey*Ma

35、th.sin(angle);ny=ex*Math.sin(angle)+eyMath.cos(angle);ex=nx;ey=ny;return this;)public void output()()10 .设计一个分数类,分数的分子和分母用两个整型数表示,类中定义方法能对分数进行加法、 减法、乘法和除法运算。定义分数类的对象、运算并输出运算结果。答:import java.utiL*;import java.lang.Math;public class exercise05_10(public static void main(String args)(Fraction fr,frl;Scanner reader=new Scanner(System.in);int n,d;n二reader. nextlnt();d=reader. nextlnt();fr=new Fraction(n,d);n=reader.nextlnt();d=reader.nextlnt();frl=new Fraction(n,d);fr.add(frl);fr.output();fr.sub(frl);fr.output();fr.mul(frl);

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

当前位置:首页 > 应用文书 > 解决方案

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

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