java语言程序设计作业答案.docx
- 文档编号:17184227
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:139
- 大小:1.12MB
java语言程序设计作业答案.docx
《java语言程序设计作业答案.docx》由会员分享,可在线阅读,更多相关《java语言程序设计作业答案.docx(139页珍藏版)》请在冰豆网上搜索。
java语言程序设计作业答案
Java语言程序设计(郑莉)
第二章习题答案
1.什么是对象、类,它们之间的联系?
答:
1)对象是包含现实世界物体特征的抽象实体,它反映系统为之保存信息和与它交互的能力。
对象是一些属性及服务的封装体,在程序设计领域,可以用“对象=数据+作用于这些数据上的操作”来表示。
现实生活中对象是指客观世界的实体;在程序中对象是指一组变量和相关方法的集合。
2)类是既有相同操作功能和相同的数据格式的对象的集合与抽象!
3)两者的关系:
对象是类的具体实例.。
4.请解释类属性、实例属性及其区别。
答:
实例属性,由一个个的实例用来存储所有实例都需要的属性信息,不同实例的属性值可能会不同。
5.请解释类方法、实例属性及其区别。
答:
实例方法表示特定对象的行为,在声明时前面不加static修饰符,在使用时需要发送给一个类实例。
类方法也称为静态方法,在方法声明时前面需加static修饰符,类方法表示具体实例中类对象的共有行为。
区别:
实例方法可以直接访问实例变量,调用实例方法,实例方法可以直接访问类变量,调用类方法;类方法可以直接调用类变量和类方法,类方法不能直接调用实例变量和实例方法;
6.类的访问控制符有哪几种?
具体含义及其区别。
答:
类的访问控制符只有public(公共类)及无修饰符(默认类)两种。
区别:
当使用public修饰符时表示所有其他的类都可以使用此类;当没有修饰符时,则只有与此类处于同一包中的其他类可以使用类。
7类成员的访问控制符有哪几种?
他们对类成员分别有哪些访问限制的作用?
答:
类成员的访问控制符有public,private,protecte及无修饰符.
public(公有的):
用public修饰的成分表示公有的,也就是它可以被其他任何对象访问(前提是对累成员所在的类访问有访问权限).
Private(保护的):
类中限定为private的成员只能被这个类本身访问,在类外不可见。
proteced(保护的)用该关键字修饰的成分是受保护的,只可以被同一类及其子类的实例对象访问。
无修饰符(默认的):
public,private,protected这个三个限定符不是必须写的。
如果不写,则表明是“friendly”,相应的成分可以被所在保重的各类访问。
8简述构造方法的特点?
答:
构造方法主要有以下特点:
(1)构造方法的方法名与类名相同;
(2)构造方法没有返回类型(修饰符void也不能有);
(3)构造方法通常被声明为公有的(public);
(4)构造方法可以有任意多个参数;
(5)构造方法的主要作用是完成对象的初始化工作;
(6)构造方法不能在程序中显式的调用;
(7)在生成一个对象时,系统会自动调用该类的构造方法为新生成的对象初始化。
9如果在类声明中声明了构造方法,系统是否还提供默认的构造方法?
答:
用户在进行类声明时,如果没有声明任何构造方法,系统会赋给此类一个默认(无参)的构造方法。
但是,只要用户声明了构造方法,即使没有声明无参的构造方法,系统也不会再赋默认的构造方法。
11:
声明并测试一个复数类,其方法包括toString()及复数的加、减、乘运算。
答:
publicclassComplex
{
privatefloata;
privatefloatb;
publicStringtoString()
{if(a!
=0)
return(a+"i"+"+"+b);
elsereturn(""+b);
}
publicComplex(floata,floatb)
{
this.a=a;
this.b=b;
}
publicvoidAdd(Complexp)
{
this.a+=p.a;
this.b+=p.b;
}
publicvoidDecrease(Complexp)
{
this.a-=p.a;
this.b-=p.b;
}
publicvoidMultiply(Complexp)
{
this.a=this.a*p.a;
this.b=this.b*p.b;
}
}
publicclassComplexTexter
{
publicstaticvoidmain(Stringargs[])
{
Complexa=newComplex(2,4);
Complexb=newComplex(5,8);
a.Add(b);System.out.println(a.toString()+"\n");
a.Decrease(b);System.out.println(a.toString()+"\n");
a.Multiply(b);System.out.println(a.toString()+"\n");
}
}
、
12:
什么是UML?
它由哪几部分组成?
答:
UML是图形化()即可视化的建模语言,成为面向对象建模的标准语言。
它由四部分组成:
(1)视图
(2)图(3)模型元素(4)通用机制
13.常用的类与类之间的关系有哪几种。
答:
有关联、依赖、流、泛化、实现、使用。
Java语言程序设计(郑莉)
第三章课后习题答案
1.设N为自然数:
n!
=1*2*3*….*n
称为n的阶乘,并且规定0!
=1.试编程计算2!
4!
6!
he10!
.并将结果输出到屏幕上。
答:
publicclassMul
{
publicstaticvoidmain(Stringargs[])
{
inti,n;
floats;
for(n=0;n<=10;n=n+2)
{
if(n==0)
System.out.println("0!
=1\n");
else
{s=1;
for(i=1;i<=n;i++)
s=s*i;
System.out.println(n+"!
="+s+"\n");
}
}
}
}
2.编写程序,接收用户从键键盘上输入的三个整数x,y,z..从中选出最大和最小者,并编程实现。
答:
publicclassMath{
publicstaticvoidmain(Stringargs[]){
int[]IntArg=newint[args.length];
for(inti=0;i IntArg[i]=Integer.parseInt(args[i]); } intmax,min; max=IntArg[0]>IntArg[1]? IntArg[0]: IntArg[1]; max=max>IntArg[2]? max: IntArg[2]; min=IntArg[0] IntArg[0]: IntArg[1]; min=min min: IntArg[2]; System.out.println("max="+max); System.out.println("min="+min); } } 3.求出100一枚的宿舍,并将这些数在屏幕上5个乙杭地显示出来。 答: publicclassSu{ publicstaticvoidmain(Stringargs[]){ intn,i,k=0,y; for(n=2;n<=100;n++){ y=1; for(i=2;i if(n%i==0) {y=0;break;} if(y==1){ k++; System.out.print(n+""); if(k%5==0) System.out.print("\n"); } } } } 4.使用java.lang.Math类,生成100个0---99之间的随机整数,找出他们之中的最大值和最小值,并统计大于50的整数个数。 publicclassRandom{ publicstaticvoidmain(String[]args) { intMinNum,MaxNum,n=0; int[]array=newint[100]; array[0]=(int)(Math.random()*100); MinNum=array[0]; MaxNum=array[0]; System.out.println("数列为: "); System.out.print(array[0]+""); for(inti=0;i<100;i++) { array[i]=(int)(Math.random()*100); if(array[i]>50) n++; if(array[i]>=MaxNum) MaxNum=array[i]; if(array[i]<=MinNum) MinNum=array[i]; System.out.print(array[i]+""); } System.out.println(); System.out.println("MinNum="+MinNum); System.out.println("MaxNum="+MaxNum); System.out.println("大于50的整数个数有: "+n); } } 7.什么是异常? 解释抛出、捕获的含义。 答: 异常又称为例外,是特殊的运行错误对象,在程序中可以强制编译器来处理程序运行中的发生的并非由程序本身所造成的错误; 抛出异常: 把生成异常对象并提交的过程称为抛出异常; 抛出异常是java中一个程序处理动作,检查异常时要么在方法中声明一个异常抛出,用try-catch语句捕获异常,并进行处理。 8.简述Java的异常处理机制。 答: java中声明了很多异常类,每个异常类都代表了一种运行错误,类中包含了该运行错误的信息和处理错误的方法等内容。 每当java程序运行过程中发生一个可识别的运行错误时,即该错误有一个异常类与之相对应时,系统都会产生一个相应的该异常类的对象,即产生一个异常。 一旦一个异常对象产生了,系统中就一定有相应的机制来处理它,确保不会产生死机、死循环或其他对操作系统的损害,从而保证了整个程序运行的安全性。 9.系统定义的异常与用户自定义的异常有何不同? 如何使用这两类异常? 答: 系统定义的特定情况出现的问题,而此时用来对可能遇到的问题进行处理。 用户定义的是自己觉得可能会出现问题时,需要处理的。 这样避免程序中断或是出现未知错误。 系统异常有两种一种是运行时异常,一种是普通异常,普通异常要求用户捕获或者抛出的,不补货或者抛出就会编译不通过。 运行时异常编译可以通过,但是运行时才显露出来。 10.用户如何自定义异常? 编程实现一个用户自定义异常。 (1)定义mytest importjava.io.*; publicclassmytest{ privatestaticintquotient(intnumber,intdenominator)throws DivideByZeroException{ if(denominator==0) thrownewDivideByZeroException(); return(number/denominator); } publicstaticvoidmain(Stringargs[]){ intnumber1=0,number2=0,result=0; try{ System.out.println("输入第一个数字: "); number1=Integer.valueOf(Keyboard.getString()).intValue(); System.out.println("输入第二个数字: "); number2=Integer.valueOf(Keyboard.getString()).intValue(); result=quotient(number1,number2); } catch(NumberFormatExceptione){ System.out.println(e.toString()); System.exit(-1); } System.out.println(number1+"/"+number2+"="+result); } } (2)定义DivideByZeroException publicclassDivideByZeroExceptionextendsArithmeticException{ publicDivideByZeroException(){ super("除数不能为0! "); } } (3)定义Keyboard importjava.io.*; publicclassKeyboard{ staticBufferedReaderinputStream=newBufferedReader(newInputStreamReader(System.in)); publicstaticintgetInteger(){ try{ return(Integer.valueOf(inputStream.readLine().trim()).intValue()); }catch(Exceptione){ e.printStackTrace(); return0; } } publicstaticStringgetString(){ try{ return(inputStream.readLine()); }catch(IOExceptione){return"0";} } } Java语言程序设计 第四章课后习题答案 1.子类将继承父类所有的属性和方法吗? 为什么? 答: 不,子类不能直接访问从父类中继承的私有属性及方法,但可以对公有及保护方法进行访问。 2.方法的覆盖与方法的重载有何不同? 答: 覆盖是运用在子类中实现与父类相同的功能,但采用不同的算法或公式;在名字相同的方法中,要做比父类更多的事情;在子类中需要取消从父类继承的方法。 8.什么是抽象类? 抽象类中是否一定要包括抽象方法? 答: 抽象类是一个不完全的类,不能使用new方法进行实例化。 抽象类可以包含抽象方法,也可以不包含抽象方法,但有抽象方法的必须是抽象类。 9.this和super分别有哪些特殊含义? 都有哪些种用法? 答: this表示当前类;super表示调用父类。 在定义类的时候用到,this是当前对象的引用,super是当前对象的父类对象的引用,一般的都是把super用在构造函数中。 10.完成下面父类及子类的声明: (1)声明Student类属性包括学号、姓名、英语成绩、数学成绩、计算机成绩和总成绩。 方法包括构造方法、get方法、set方法、toString方法、equals方法、compare方法(比较两个学生的总成绩,结果分为大于、小于、等于),sum方法(计算总成绩)和testScore方法(计算评测成绩)。 注: 评测成绩可以取三门课成绩的平均分,另外任何一门课的成绩的改变都需要对总成绩进行重新计算,因此,在每一个set方法中应调用sum方法计算总成绩。 publicclassStudent{ Stringid; Stringname; floatscoreOfenglish; floatscoreOfmath; floatscoreOfcomputer; floatscoreOfsum; //构造方法 publicStudent(){ } publicStudent(Stringaid,Stringaname,floatascoreOfenglish,floatascoreOfmath,floatascoreOfcomputer){ this.id=aid; this.name=aname; this.scoreOfenglish=ascoreOfenglish; this.scoreOfmath=ascoreOfmath; this.scoreOfcomputer=ascoreOfcomputer; //this.scoreOfsum=ascoreOfenglish+ascoreOfmath+ascoreOfcomputer; this.scoreOfsum=sum(); } //sum方法 publicfloatsum(){ return(this.scoreOfenglish+this.scoreOfmath+this.scoreOfcomputer); } //testScore测评成绩/平均分 publicfloattestScore(){ return(this.scoreOfsum/3); } //6个get方法 publicStringgetid(){ return(id); } publicStringgetname(){ return(name); } publicfloatgetscoreOfenglish(){ return(scoreOfenglish); } publicfloatgetscoreOfmath(){ return(scoreOfmath); } publicfloatgetscoreOfcomputer(){ return(scoreOfcomputer); } publicfloatgetscoreOfsum(){ return(scoreOfsum); } //5个set方法 publicvoidsetid(Stringnewid){ this.id=newid; } publicvoidsetname(Stringnewname){ this.name=newname; } publicvoidsetscoreOfenglish(floatnewscoreOfenglish){ this.scoreOfenglish=newscoreOfenglish; this.scoreOfsum=sum(); } publicvoidsetscoreOfmath(floatnewscoreOfmath){ this.scoreOfmath=newscoreOfmath; this.scoreOfsum=sum(); } publicvoidsetscoreOfcomputer(floatnewscoreOfcomputer){ this.scoreOfcomputer=newscoreOfcomputer; this.scoreOfsum=sum(); } //toString方法 publicStringtoString(){ return("学号: "+this.id+"\n姓名: "+name+"\n英语: "+this.scoreOfenglish+"\n数学: "+this.scoreOfmath+"\n计算机: "+this.scoreOfcomputer+"\n总分: "+this.scoreOfsum); } //compare方法/比较2学生总分 publicvoidcompare(Studentx){ if(this.getscoreOfsum()>x.getscoreOfsum())System.out.println(this.getname()+"总分大于"+x.getname()); if(this.getscoreOfsum() elseSystem.out.println(this.getname()+"总分等于"+x.getname()); } //equals方法/比较2学生学号是否相等(还没完善) /* *publicbooleanequals(Objectx){ if(this.getClass()! =x.getClass())returnfalse; Studentb=(Student)x; if(this.id==b.getid())returntrue; } */ } (2)声明StudentXW(学习委员)类为Student类的子类。 在StudentXW类中增加责任属性,并重写testScore方法(评测成绩=三门课平均分+3) publicclassStudentXWextendsStudent{ Stringresponsibility; //构造方法 publicStudentXW(){ super(); //responsibility=""; } publicStudentXW(Stringaid,Stringaname,floatascoreOfenglish,floatascoreOfmath,floatascoreOfcomputer,Stringaresponsibility){ super(aid,aname,ascoreOfenglish,ascoreOfmath,ascoreOfcomputer); responsibility=aresponsibility; } //testScore测评成绩/平均分 publicfloattestScore(){ return(this.scoreOfsum/3+3); } //toString方法 publicStringtoString(){ return("学号: "+this.id+"\n姓名: "+name+"\n英语: "+this.scoreOfenglish+"\n数学: "+this.scoreOfmath+"\n计算机: "+this.scoreOfcomputer+"\n总分: "+this.scoreOfsum+"\n职位: "+this.responsibility); } } (3)声明StudentBZ类为Student类的子类 在StudentBZ类中增加责任属性,并重写testScore方法(评测成绩=三门课平均分+5) publicclassStudentBZextendsStudent{ Stringresponsibility; //构造方法 publicStudentBZ(){ super(); //responsibility=""; } publicStudentBZ(Stringaid,Stringaname,float
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 语言程序设计 作业 答案