Java语言程序设计(郑莉)课后习题答案_第1页
Java语言程序设计(郑莉)课后习题答案_第2页
Java语言程序设计(郑莉)课后习题答案_第3页
Java语言程序设计(郑莉)课后习题答案_第4页
Java语言程序设计(郑莉)课后习题答案_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

(1)构造方法的方法名与类名相同;

Java语言程序设计(郑莉)(2)构造方法没有返回类型(修饰符void也不能有):

第二章习题答案(3)构造方法通常被声明为公有的(public);

1.什么是对象、类,它们之间的联系?(4)构造方法可以有任意多个参数:

答:1)对象是包含现实世界物体特征的抽象实体,它反映系统为(5)构造方法的主要作用是完成对象的初始化工作;

之保存信息和与它交互的能力。对象是一些属性及服务的封装体,(6)构造方法不能在程序中显式的调用;

在程序设计领域,可以用“对象=数据+作用于这些数据上的操作”(7)在生成一个对象时,系统会自动调用该类的构造方法为

来表示。现实生活中对象是指客观世界的实体:在程序中对象是指新生成的对象初始化。

一组变量和相关方法的集合。9如果在类声明中声明了构造方法,系统是否还提供默认的构造方

2)类是既有相同操作功能和相同的数据格式的对象的集合与抽象!法?

3)两者的关系:对象是类的具体实例答:

2.什么是面向对象的程序设计方法?它有那些基本特征?用户在进行类声明时,如果没有声明任何构造方法,系统会赋给

答:面向对象程序设计从所处理的数据入手,以数据为中心而不是此类一个默认(无参)的构造方法。但是,只要用户声明了构造方

以服务为中心来描述系统。它把编程问题视为•个数据集合,数据法,即使没有声明无参的构造方法,系统也不会再赋默认的构造方

相对于功能而言,具有更强的稳定性。法。

它的特征:抽象,封装,继承,多态。10:声明Patient类表示在门诊室中的病人。此类对象应包括na

3(无用)me(astring)\sex(achar)、age(an

4.请解释类属性、实例属性及其区别。integer)>weight(afloatO>allergies(aboolean).

答:实例属性,由一个个的实例用来存储所有实例都需要的声明存取及修改方法。在一个单独的累中,声明测试方法,并生

属性信息,不同实例的属性值可能会不同。成两个patient的例了,:

5.请解释类方法、实例属性及其区别。Atientapril=newPatient();

答:实例方法表示特定对象的行为,在声明时前面不加static修饰April.setname("zhangli")

符,在使用时需要发送给一个类实例。April.setSexfT);;

类方法也称为静态方法,在方法声明时前面需加static修饰April.setage(330;

符,类方法表示具体实例中类对象的共有行为。April.setweigeht(154.72);

区别:实例方法可以直接访问实例变量,调用实例方法,实ApriLsetalolergies(true);

例方法可以直接访问类变量,调用类方法;类方法可以直接调用类System.out.println("那么:"+april.getname());

变量和类方法,类方法不能直接调用实例变量和实例方法;System.out.println(z/sex:w+april.getsex());

6.类的访问控制符有哪几种?具体含义及其区别。System.out.println(r/age:w+april.getage());

答:类的访问控制符只有public(公共类)及无修饰符(默认类)System.outprintln(/Zweught:w+april.getweight());\

两种。System.out.println(/Zallergies:w+april.getallergies());

区别:当使用public修饰符时表示所有其他的类都可以使用此类;声明并测试toString()方法显示•个病人的aga、sex、name及

当没有修饰符时,则只有与此类处于同一包中的其他类可以使用allergies属性。

类。答:

7类成员的访问控制符有哪几种?他们对类成员分别有哪些访问限publicclassPatient

制的作用?{

答:类成员的访问控制符有public,private,protecte及无修饰符.privateStringname;

public(公有的):用public修饰的成分表示公有的,也就是它可以被privatecharsex;

其他任何对象访问(前提是对累成员所在的类访问有访问权限).privateintage;

Private(保护的):类中限定为private的成员只能被这个类本身privatefloatweight;

访问,在类外不可见。privatebooleanallergies;

proteced(保护的)用该关键字修饰的成分是受保护的,只可以publicvoidsetname(Stringa)

被同一类及其子类的实例对象访问。{

无修饰符(默认的):public,private,protected这个三个限定符name=a;

不是必须写的。如果不写,则表明是“friendly",相应的成分可以}

被所在保重的各类访问。publicvoidsetsexfcharb)

8简述构造方法的特点?{

答:构造方法主要有以下特点:sex=b;

)减、乘运算。

publicvoidsetage(intc)答:publicclassComplex

((

age=c;privatefloata;

)privatefloatb;

publicvoidsetweightffloatd)publicStringtoString()

({if(a!=O)

weight=d;return(a+"i"+"+"+b);

)elsereturn(""+b);

publicvoidsetallergies(booleane)}

(publicComplexffloatajloatb)

allergies=e;{

)this.a=a;

publicStringgetname(){returnname;}this.b=b;

publicchargetsex(){returnsex;}}

publicintgetage(){returnage;}publicvoidAddfComplexp)

publicfloatgetweight(){returnweight;}{

publicbooleangetallergies(){returnallergies;}this.a+=p.a;

)this.b+=p.b;

publicclassText}

(publicvoidDecrease(Complexp)

publicstaticvoidmain(Stringargs[]){

(this.a-=p.a;

Patientapril=newPatientf);this.b-=p.b;

april.setname("ZhangLi");)

april.setsexl7');publicvoidMultiplyfComplexp)

april.setage(33);{

april.setweight(154.72f);this.a=this.a*p.a;

april.setallergies(true);this.b=this.b*p.b;

System.out.printlnf'Name:"+april.getname());)

System.out.printlnf'sex:"+april.getsex());}

System.out.printlnf'age:"+april.getage());publicclassComplexTexter

System.out.printlnf'weight:"+april.getweight());{

System.out.printlnf'allergies:"+april.getallergies());publicstaticvoidmainfStringargs[])

){

)Complexa=newComplex(2z4);

hicrosoFtWindowsXP5.1.26001iplexb=newComplex(5,8);

<C>版杈所有1985-2001Microsoft;Corp-

i(b);System.out.println(a.toString()+"\n");

C-XDocumentzsandSet;tzinXAdminis=

:rease(b);System.out.println(a.toString()+"\n,');

D=X>c<1jaua

ltiply(b);System.out.println(a.toString()+"\n");

D=Patient_JAVA

D=Text-Jatvai

p二Text

sex=£

产ge:33

we=154.72

a1leies=t;

[D:

11:声明并测试•个复数类,其方法包括toString()及复数的加、

s=s*i;

D:\jaua>jauacComplex.jaua

System.out.println(n+"!="+s+"\n");

D:\jaua>jauacConplexTexter.jaua

D:\jaua>jauaComplexTexter

?.0i*12.0

5.0i+8.0

10.0i+32.0

D:

12:什么是UML?它由哪几部分组成?

答:

UML是图形化()即可视化的建模语言,成为面向对象建模

的标准语言。

它由四部分组成:(1)视图(2)图(3)模型元素(4)通用

机制

13.常用的类与类之间的关系有哪儿种。

答:有关联、依赖、流、泛化、实现、使用。

14.考虑学院、系及教员应该具有哪些属性,并画出它们之间关

系的类图。

第三章课后习题答案2.编写程序,接收用户从键键盘上输入的三个整数x,y,z..从中选出最

1.设N为自然数:大和最小者,并编程实现。

n!=l*2*3*....*n答:publicclassMath{

称为n的阶乘,并且规定0!=1.试编程计算21,4!,6!he10!.并将结果publicstaticvoidmainfStringargs[]){

输出到屏幕上。int[]IntArg=newint[args.length];

答:for(inti=O;i<args.length;i++){

publicclassMuilntArg[i]=lnteger.parselnt(args[i]);

{}

publicstaticvoidmain(Stringargs[])intmax,min;

{max=lntArg[O]>lntArg[l]?lntArg[O]:lntArg[l];

inti,n;max=max>lntArg[2]?max:lntArg[2];

floats;min=lntArg[O]<lntArg[l]?lntArg[O]:lntArg[l];

for(n=0;n<=10;n=n+2)min=min<lntArg[2]?min:lntArg[2];

{System.out.println("max=',+max);

if(n==O)System.out.println("min="+min);

System.out.pnntln("0!=l\n");}

else)

{s=l;

for(i=l;i<=n;i++)

array[i]=(int)(Math.random()*100);

b:\jaua>jauacMath.Jaua

if(array[i]>50)

b:\jaua>jauaMath451678n++;

pax=78

r.4cif(array[i]>=MaxNum)

pin=16

MaxNum=array[i];

|ID:7aua>.if(array[i]<=MinNum)

3.求出100一枚的宿舍,并将这些数在扉幕上5个乙杭地显示出来aMinNum=array[i];

答:System.out.print(array[i]+"");

publicclassSu{)

publicstaticvoidmain(Stringargs[]){System.out.printlnf);

intn/i/k=0,y;System.out.println("MinNum="+MinNum);

for(n=2;n<=100;n++){System.out.println("MaxNum="+MaxNum);

y=i;System.out.println("大于50的整数个数有严+n);

for(i=2;i<n;i++))

if(n%i==O)}

{y=0;break;}

c\C:\¥I!iD0WS\syste>32\c>d.exe

if(y==i){

k++;p:、我的文档、桌面Random.jaua

System.out.print(n+"");D:\我的文档、桌面\Jaua>jauaRandom

if(k%5==0)数列为:

3096855293378096714452431854550812621

System.out.print("\n");323258754481263734651119308564601581

)3547533381971611903537133121799865105

438685438374269867176786979773565193

)MinNun=l

MaxNun=98

大于50的整数个数有:52

)

:\jaua>jauacSu.jaua5.接收用户从键盘上输入的两个整数,求两个数的最大公约数和最

小公倍数,并输出。

CD:\jaua>jauaSu

publicclassTest2

23571113

1719232931(

3741434753publicstaticvoidmain(String[]args)

5961677173

{

79838997

int[]I=newint[args.length];

|D:\jaua>l

for(inti=O;i<args.length;i++){

4.使用java.Iang.Math类,生成100个0--99之间的随机整数,找出l[i]=lnteger.parselnt(args[i]);

他们之中的最大值和最小值,并统计大于50的整数个数。)

publicclassRandom{intm,n,tempzt;

publicstaticvoidmain(String[]args)if(l[0]<l[l])

((

intMinNum,MaxNum,n=O;temp=l[0];

int[]array=newint[100];l[0]=l[l];

array[0]=(int)(Math.random()*100);l[l]=temp;

MinNum=array[0];)

MaxNum=array[0];m=l[0];

n=l[l];

System.out.printin("数列为:");t=m%n;

System.out.print(array[0]+"");while(t!=0)

for(inti=0;i<100;i++)

m=t;

n=m;//Keyboard类

t=m%n;importjava.io.*;

)publicclassKeyboard{

System.out.println("两个数的最大公约数为:"+n);staticBufferedReaderinputstream=new

System.out.println("两个数的最小公倍数为:BufferedReader(new

}InputStreamReader(System.in));

)publicstaticintgetlnteger(){

try(

c、C:\fINDO¥S\syste・32\c・d.exe

return(Integer.valueOf(inputStream.readLine().t

D:\我的文档、桌面Test2.Jaua

rim()).intValue());

世端的文档、桌面3aua>jauaTest268}catch(Exceptione){

质个数的最大公约数为:2

e.printStackTrace();

惭个数的馥小公倍数为:24

return0;

帜、我的文档、桌面3aua>)

)

6.从键盘上输入一件物品的价格(范围在0.10~5.00元.),假publicstaticStringgetString(){

设用户支付了一张5元纸币,请列出•种找零的方案,使得纸币及try(

硬币的个数最少。如3.68元,应为两元一张、一元一张、五角一return(inputstream.readLine());

个、一角一个、五分一个、二分•个、一分一一个。}catch(lOExceptione){

//Price类return"0;

importjava.io.*;)

publicclassPrice()

publicstaticvoidmain(Stringargs[]){publicstaticfloatgetFloat(){

System.out.printin("enteraStrings="n;

number(0.01---5.00):");try(

floata=Keyboard.getFloat();BufferedReaderin=newBufferedReader(new

intc=(int)(a*100);InputStreamReader(System.in));

intb=500-c;s=in.readLine();

System.out.printin("找零如下:");return(Float.parseFloat(s));

if(b/200!=0){System.out.printin(b/200+”张2元)

");b-=(b/200)*200;}catch(lOExceptione)

if(b/100!=0){System.out.printin(b/100+”张1元(

");b-=(b/100)*100;}System.out.printin("输入非法!”);

return(0.Of);

if(b/50!=0){System.out.printin(b/50+”张5角)

");b-=(b/50)*50;})

if(b/20!=0){System.out.printin(b/20+”张2角)

");b-=(b/20)*20;}运行结果:

if(b/10!=0){System.out.printIn(b/10+”张工角

Problemsf,*,Javadoc埠Declaration且

");b-=(b/10)*10;}

〈〉

if(b/5!=0){System.out.printin(b/5+”个5分terminatedPrice[JavaApplication]D:\Progrg

");b-=(b/5)*5;}enteranumber(0.01--------5.00):

3.6S

if(b/2!=0){System.out.printin(b/2+”个2分找零如下:

");b-=(b/2)*2;}[张汉

if(b!=0)System.out.printin(b+”个1分”);1张2角

)1张T角

工个2分

)

7.什么是异常?解释抛出、捕获的含义。intnumber1=0,number2=0,result=0;

答:异常又称为例外,是特殊的运行错误对象,在程序中可以强制

编译器来处理程序运行中的发生的并非由程序本身所造成的错误;try(

抛出异常:把生成异常对象并提交的过程称为抛出异常;

抛出异常是java中一个程序处理动作,检查异常时要么在方法中声System.out.prinlln(〃输入第一个数字:");

明一个异常抛出,用try-catch语句捕获异常,并进行处理。

numberl=Integer.valueOf(Keyboard.getStringO).intVal

ue0;

8.简述Java的异常处理机制。

System,out.printin(〃输入第二个数字:");

答:java中声明了很多异常类,每个异常类都代表了一种运行错误,

类中包含了该运行错误的信息和处理错误的方法等内容。每当java

number2=Integer.valueOf(Keyboard.getStringO).intVai

程序运行过程中发生一个可识别的运行错误时,即该错误有一个异

ue();

常类与之相对应时,系统都会产生一个相应的该异常类的对象,即

产生一个异常。•旦个异常对象产生了,系统中就•定有相应的

result=quotient(numberl,number2);

机制来处理它,确保不会产生死机、死循环或其他对操作系统的损

害,从而保证了整个程序运行的安全性。

)

9.系统定义的异常与用户自定义的异常有何不同?如何使用这两catch(NuniberFormatExceptione){

类异常?

答:系统定义的特定情况出现的问题,而此时用来对可能遇到的问System.out.printin(e.toString());

题进行处理。用户定义的是自己觉得可能会出现问题时,需要处理

System.exit(-1);

的。这样避免程序中断或是出现未知错误。

系统异常有两种一种是运行时异常,一种是普通异常,普通异常要)

求用户捕获或者抛出的,不补货或者抛出就会编译不通过。运行时

System,out.printIn(numberl+/z/zz+number2+/z=z,+result);

异常编译可以通过,但是运行时才显露出来。

)

10.用户如何自定义异常?编程实现一个用户自定义异常。

}

(1)定义mytest

(2)定义DivideByZeroException

importjava.io.*;

publicclassmytest{publicclassDivideByZeroExceptionextends

ArithmeticException{

privatestaticintquotient(intnumber,int

publicDivideByZeroExceptionO{

denominator)throws

super(〃除数不能为0!〃);

DivideByZeroException{

}

if(denominator==0)

)

thrownewDivideByZeroExceptionO;

(3)Keyboard

return(number/denominator);定义

importjava.io.*;

publicclassKeyboard(

publicstaticvoidmain(Stringargs[]){

staticBufferedReaderinputStream=newBufferedReader(new中需要取消从父类继承的方法。

InputStreamReader(System,in));3.声明两个带有无参构造方法的两个类A和B,声明A的子类C,

并且声明B为C的一个成员,不声明C的构造方法。编写测试代

publicstaticintgetlntegerO{码,生成类C的实例对象,并观察结果。

HA类

try{

publicclassA{

publicA(){

return

System.out.println("输出A类");

(Integer.valueOf(inputStream.readLine().trim()).intValue(

)

));

}

〃B类

}catch(Exceptione){

publicclassB{

publicB(){

e.printStackTrace();

System.out.println(呻俞出B类");

)

return0;

)

publicclassCextendsA{

Bb=newB();

}

publicstaticStringgetStringO{〃测试类

publicclasstest4_3{

try(publicstaticvoidmain(Stringargs[]){

Cc=newC();

return(inputstream.readLineO);)

)

}catch(lOExceptione){return"0〃;}运行结果:

}IProblems@Javadoc

<terminated>test43[Java

输出A类

温馨提示

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

评论

0/150

提交评论