Java語(yǔ)言程序設(shè)計(jì)(鄭莉)課后習(xí)題答案_第1頁(yè)
Java語(yǔ)言程序設(shè)計(jì)(鄭莉)課后習(xí)題答案_第2頁(yè)
Java語(yǔ)言程序設(shè)計(jì)(鄭莉)課后習(xí)題答案_第3頁(yè)
Java語(yǔ)言程序設(shè)計(jì)(鄭莉)課后習(xí)題答案_第4頁(yè)
Java語(yǔ)言程序設(shè)計(jì)(鄭莉)課后習(xí)題答案_第5頁(yè)
已閱讀5頁(yè),還剩39頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

(1)構(gòu)造方法的方法名與類名相同;

Java語(yǔ)言程序設(shè)計(jì)(鄭莉)(2)構(gòu)造方法沒有返回類型(修飾符void也不能有):

第二章習(xí)題答案(3)構(gòu)造方法通常被聲明為公有的(public);

1.什么是對(duì)象、類,它們之間的聯(lián)系?(4)構(gòu)造方法可以有任意多個(gè)參數(shù):

答:1)對(duì)象是包含現(xiàn)實(shí)世界物體特征的抽象實(shí)體,它反映系統(tǒng)為(5)構(gòu)造方法的主要作用是完成對(duì)象的初始化工作;

之保存信息和與它交互的能力。對(duì)象是一些屬性及服務(wù)的封裝體,(6)構(gòu)造方法不能在程序中顯式的調(diào)用;

在程序設(shè)計(jì)領(lǐng)域,可以用“對(duì)象=數(shù)據(jù)+作用于這些數(shù)據(jù)上的操作”(7)在生成一個(gè)對(duì)象時(shí),系統(tǒng)會(huì)自動(dòng)調(diào)用該類的構(gòu)造方法為

來(lái)表示?,F(xiàn)實(shí)生活中對(duì)象是指客觀世界的實(shí)體:在程序中對(duì)象是指新生成的對(duì)象初始化。

一組變量和相關(guān)方法的集合。9如果在類聲明中聲明了構(gòu)造方法,系統(tǒng)是否還提供默認(rèn)的構(gòu)造方

2)類是既有相同操作功能和相同的數(shù)據(jù)格式的對(duì)象的集合與抽象!法?

3)兩者的關(guān)系:對(duì)象是類的具體實(shí)例答:

2.什么是面向?qū)ο蟮某绦蛟O(shè)計(jì)方法?它有那些基本特征?用戶在進(jìn)行類聲明時(shí),如果沒有聲明任何構(gòu)造方法,系統(tǒng)會(huì)賦給

答:面向?qū)ο蟪绦蛟O(shè)計(jì)從所處理的數(shù)據(jù)入手,以數(shù)據(jù)為中心而不是此類一個(gè)默認(rèn)(無(wú)參)的構(gòu)造方法。但是,只要用戶聲明了構(gòu)造方

以服務(wù)為中心來(lái)描述系統(tǒng)。它把編程問題視為?個(gè)數(shù)據(jù)集合,數(shù)據(jù)法,即使沒有聲明無(wú)參的構(gòu)造方法,系統(tǒng)也不會(huì)再賦默認(rèn)的構(gòu)造方

相對(duì)于功能而言,具有更強(qiáng)的穩(wěn)定性。法。

它的特征:抽象,封裝,繼承,多態(tài)。10:聲明Patient類表示在門診室中的病人。此類對(duì)象應(yīng)包括na

3(無(wú)用)me(astring)\sex(achar)、age(an

4.請(qǐng)解釋類屬性、實(shí)例屬性及其區(qū)別。integer)>weight(afloatO>allergies(aboolean).

答:實(shí)例屬性,由一個(gè)個(gè)的實(shí)例用來(lái)存儲(chǔ)所有實(shí)例都需要的聲明存取及修改方法。在一個(gè)單獨(dú)的累中,聲明測(cè)試方法,并生

屬性信息,不同實(shí)例的屬性值可能會(huì)不同。成兩個(gè)patient的例了,:

5.請(qǐng)解釋類方法、實(shí)例屬性及其區(qū)別。Atientapril=newPatient();

答:實(shí)例方法表示特定對(duì)象的行為,在聲明時(shí)前面不加static修飾April.setname("zhangli")

符,在使用時(shí)需要發(fā)送給一個(gè)類實(shí)例。April.setSexfT);;

類方法也稱為靜態(tài)方法,在方法聲明時(shí)前面需加static修飾April.setage(330;

符,類方法表示具體實(shí)例中類對(duì)象的共有行為。April.setweigeht(154.72);

區(qū)別:實(shí)例方法可以直接訪問實(shí)例變量,調(diào)用實(shí)例方法,實(shí)ApriLsetalolergies(true);

例方法可以直接訪問類變量,調(diào)用類方法;類方法可以直接調(diào)用類System.out.println("那么:"+april.getname());

變量和類方法,類方法不能直接調(diào)用實(shí)例變量和實(shí)例方法;System.out.println(z/sex:w+april.getsex());

6.類的訪問控制符有哪幾種?具體含義及其區(qū)別。System.out.println(r/age:w+april.getage());

答:類的訪問控制符只有public(公共類)及無(wú)修飾符(默認(rèn)類)System.outprintln(/Zweught:w+april.getweight());\

兩種。System.out.println(/Zallergies:w+april.getallergies());

區(qū)別:當(dāng)使用public修飾符時(shí)表示所有其他的類都可以使用此類;聲明并測(cè)試toString()方法顯示?個(gè)病人的aga、sex、name及

當(dāng)沒有修飾符時(shí),則只有與此類處于同一包中的其他類可以使用allergies屬性。

類。答:

7類成員的訪問控制符有哪幾種?他們對(duì)類成員分別有哪些訪問限publicclassPatient

制的作用?{

答:類成員的訪問控制符有public,private,protecte及無(wú)修飾符.privateStringname;

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

其他任何對(duì)象訪問(前提是對(duì)累成員所在的類訪問有訪問權(quán)限).privateintage;

Private(保護(hù)的):類中限定為private的成員只能被這個(gè)類本身privatefloatweight;

訪問,在類外不可見。privatebooleanallergies;

proteced(保護(hù)的)用該關(guān)鍵字修飾的成分是受保護(hù)的,只可以publicvoidsetname(Stringa)

被同一類及其子類的實(shí)例對(duì)象訪問。{

無(wú)修飾符(默認(rèn)的):public,private,protected這個(gè)三個(gè)限定符name=a;

不是必須寫的。如果不寫,則表明是“friendly",相應(yīng)的成分可以}

被所在保重的各類訪問。publicvoidsetsexfcharb)

8簡(jiǎn)述構(gòu)造方法的特點(diǎn)?{

答:構(gòu)造方法主要有以下特點(diǎn):sex=b;

)減、乘運(yùn)算。

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=£

產(chǎn)ge:33

we=154.72

a1leies=t;

[D:

11:聲明并測(cè)試?個(gè)復(fù)數(shù)類,其方法包括toString()及復(fù)數(shù)的加、

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是圖形化()即可視化的建模語(yǔ)言,成為面向?qū)ο蠼?/p>

的標(biāo)準(zhǔn)語(yǔ)言。

它由四部分組成:(1)視圖(2)圖(3)模型元素(4)通用

機(jī)制

13.常用的類與類之間的關(guān)系有哪兒種。

答:有關(guān)聯(lián)、依賴、流、泛化、實(shí)現(xiàn)、使用。

14.考慮學(xué)院、系及教員應(yīng)該具有哪些屬性,并畫出它們之間關(guān)

系的類圖。

第三章課后習(xí)題答案2.編寫程序,接收用戶從鍵鍵盤上輸入的三個(gè)整數(shù)x,y,z..從中選出最

1.設(shè)N為自然數(shù):大和最小者,并編程實(shí)現(xiàn)。

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

稱為n的階乘,并且規(guī)定0!=1.試編程計(jì)算21,4!,6!he10!.并將結(jié)果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一枚的宿舍,并將這些數(shù)在扉幕上5個(gè)乙杭地顯示出來(lái)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的整數(shù)個(gè)數(shù)有嚴(yán)+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)數(shù)列為:

3096855293378096714452431854550812621

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

)3547533381971611903537133121799865105

438685438374269867176786979773565193

)MinNun=l

MaxNun=98

大于50的整數(shù)個(gè)數(shù)有:52

)

:\jaua>jauacSu.jaua5.接收用戶從鍵盤上輸入的兩個(gè)整數(shù),求兩個(gè)數(shù)的最大公約數(shù)和最

小公倍數(shù),并輸出。

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個(gè)0--99之間的隨機(jī)整數(shù),找出l[i]=lnteger.parselnt(args[i]);

他們之中的最大值和最小值,并統(tǒng)計(jì)大于50的整數(shù)個(gè)數(shù)。)

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("數(shù)列為:");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("兩個(gè)數(shù)的最大公約數(shù)為:"+n);staticBufferedReaderinputstream=new

System.out.println("兩個(gè)數(shù)的最小公倍數(shù)為: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){

質(zhì)個(gè)數(shù)的最大公約數(shù)為:2

e.printStackTrace();

慚個(gè)數(shù)的馥小公倍數(shù)為:24

return0;

幟、我的文檔、桌面3aua>)

)

6.從鍵盤上輸入一件物品的價(jià)格(范圍在0.10~5.00元.),假publicstaticStringgetString(){

設(shè)用戶支付了一張5元紙幣,請(qǐng)列出?種找零的方案,使得紙幣及try(

硬幣的個(gè)數(shù)最少。如3.68元,應(yīng)為兩元一張、一元一張、五角一return(inputstream.readLine());

個(gè)、一角一個(gè)、五分一個(gè)、二分?個(gè)、一分一一個(gè)。}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;}運(yùn)行結(jié)果:

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+”個(gè)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+”個(gè)2分找零如下:

");b-=(b/2)*2;}[張漢

if(b!=0)System.out.printin(b+”個(gè)1分”);1張2角

)1張T角

工個(gè)2分

)

7.什么是異常?解釋拋出、捕獲的含義。intnumber1=0,number2=0,result=0;

答:異常又稱為例外,是特殊的運(yùn)行錯(cuò)誤對(duì)象,在程序中可以強(qiáng)制

編譯器來(lái)處理程序運(yùn)行中的發(fā)生的并非由程序本身所造成的錯(cuò)誤;try(

拋出異常:把生成異常對(duì)象并提交的過(guò)程稱為拋出異常;

拋出異常是java中一個(gè)程序處理動(dòng)作,檢查異常時(shí)要么在方法中聲System.out.prinlln(〃輸入第一個(gè)數(shù)字:");

明一個(gè)異常拋出,用try-catch語(yǔ)句捕獲異常,并進(jìn)行處理。

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

ue0;

8.簡(jiǎn)述Java的異常處理機(jī)制。

System,out.printin(〃輸入第二個(gè)數(shù)字:");

答:java中聲明了很多異常類,每個(gè)異常類都代表了一種運(yùn)行錯(cuò)誤,

類中包含了該運(yùn)行錯(cuò)誤的信息和處理錯(cuò)誤的方法等內(nèi)容。每當(dāng)java

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

程序運(yùn)行過(guò)程中發(fā)生一個(gè)可識(shí)別的運(yùn)行錯(cuò)誤時(shí),即該錯(cuò)誤有一個(gè)異

ue();

常類與之相對(duì)應(yīng)時(shí),系統(tǒng)都會(huì)產(chǎn)生一個(gè)相應(yīng)的該異常類的對(duì)象,即

產(chǎn)生一個(gè)異常。?旦個(gè)異常對(duì)象產(chǎn)生了,系統(tǒng)中就?定有相應(yīng)的

result=quotient(numberl,number2);

機(jī)制來(lái)處理它,確保不會(huì)產(chǎn)生死機(jī)、死循環(huán)或其他對(duì)操作系統(tǒng)的損

害,從而保證了整個(gè)程序運(yùn)行的安全性。

)

9.系統(tǒng)定義的異常與用戶自定義的異常有何不同?如何使用這兩catch(NuniberFormatExceptione){

類異常?

答:系統(tǒng)定義的特定情況出現(xiàn)的問題,而此時(shí)用來(lái)對(duì)可能遇到的問System.out.printin(e.toString());

題進(jìn)行處理。用戶定義的是自己覺得可能會(huì)出現(xiàn)問題時(shí),需要處理

System.exit(-1);

的。這樣避免程序中斷或是出現(xiàn)未知錯(cuò)誤。

系統(tǒng)異常有兩種一種是運(yùn)行時(shí)異常,一種是普通異常,普通異常要)

求用戶捕獲或者拋出的,不補(bǔ)貨或者拋出就會(huì)編譯不通過(guò)。運(yùn)行時(shí)

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

異常編譯可以通過(guò),但是運(yùn)行時(shí)才顯露出來(lái)。

)

10.用戶如何自定義異常?編程實(shí)現(xiàn)一個(gè)用戶自定義異常。

}

(1)定義mytest

(2)定義DivideByZeroException

importjava.io.*;

publicclassmytest{publicclassDivideByZeroExceptionextends

ArithmeticException{

privatestaticintquotient(intnumber,int

publicDivideByZeroExceptionO{

denominator)throws

super(〃除數(shù)不能為0!〃);

DivideByZeroException{

}

if(denominator==0)

)

thrownewDivideByZeroExceptionO;

(3)Keyboard

return(number/denominator);定義

importjava.io.*;

publicclassKeyboard(

publicstaticvoidmain(Stringargs[]){

staticBufferedReaderinputStream=newBufferedReader(new中需要取消從父類繼承的方法。

InputStreamReader(System,in));3.聲明兩個(gè)帶有無(wú)參構(gòu)造方法的兩個(gè)類A和B,聲明A的子類C,

并且聲明B為C的一個(gè)成員,不聲明C的構(gòu)造方法。編寫測(cè)試代

publicstaticintgetlntegerO{碼,生成類C的實(shí)例對(duì)象,并觀察結(jié)果。

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{〃測(cè)試類

publicclasstest4_3{

try(publicstaticvoidmain(Stringargs[]){

Cc=newC();

return(inputstream.readLineO);)

)

}catch(lOExceptione){return"0〃;}運(yùn)行結(jié)果:

}IProblems@Javadoc

<terminated>test43[Java

輸出A類

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論