Java面向?qū)ο蟪绦蛟O(shè)計(jì)-課后習(xí)題解答_第1頁
Java面向?qū)ο蟪绦蛟O(shè)計(jì)-課后習(xí)題解答_第2頁
Java面向?qū)ο蟪绦蛟O(shè)計(jì)-課后習(xí)題解答_第3頁
Java面向?qū)ο蟪绦蛟O(shè)計(jì)-課后習(xí)題解答_第4頁
Java面向?qū)ο蟪绦蛟O(shè)計(jì)-課后習(xí)題解答_第5頁
已閱讀5頁,還剩40頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

序設(shè)

Java面向?qū)ο蟪绦蛟O(shè)計(jì)

清華大學(xué)出版社

(編著耿祥義張躍平)

習(xí)題解答

建議使用文檔結(jié)構(gòu)圖

(選擇Word菜單f視圖一文檔結(jié)構(gòu)圖)

習(xí)題1

1.JamesGosling

2.

(1)使用一個(gè)文本編輯器編寫源文件。

(2)使用Java編譯器(javac.exe)編譯Java源程序,得到字節(jié)碼文件。

(3)使用Java解釋器(java,exe)運(yùn)行Java程序

3.Java的源文件是由若干個(gè)書寫形式互相獨(dú)立的類組成的。

應(yīng)用程序中可以沒有public類,若有的話至多可以有一個(gè)public類。

4.系統(tǒng)環(huán)境pathD\jdk\bin;

系統(tǒng)環(huán)境classpathD\jdk\jre\lib\rt.jar;.;

5.B

6.Java源文件的擴(kuò)展名是.java。Java字節(jié)碼的擴(kuò)展名是.class。

7.D

8.(1)Speak.java

(2)生成兩個(gè)字節(jié)碼文件,這些字節(jié)碼文件的名字Speak.class和Xiti8.class

(3)javaXiti8

(4)執(zhí)行javaSpeak的錯(cuò)誤提示

Exceptioninthread"main"java.lang.NoSuchMethodError:main

執(zhí)行javaxiti8得到的錯(cuò)誤提示

Exceptioninthread"main"java.Iang.NoClassDefFoundError:xiti8(wrongname:Xiti8)

執(zhí)行javaXiti8.class得到的錯(cuò)誤提示

Exceptioninthread"main**java.lang.NoClassDefFoundError:Xiti8/class

執(zhí)行javaXiti8得到的輸出結(jié)果

I'mgladtomeetyou

9.屬于操作題,解答略。

習(xí)題2

2.【代碼1】【代碼2】錯(cuò)誤〃【代碼3】更正為noatz=6.89F;

3.float型常量后面必須要有后綴“f”或“F”。

對于double常量,后面可以有后綴“d”或"D”,但允許省略該后綴。

4.publicclassXiti4{

publicstaticvoidmain(Stringargs[]){

charchi='你',ch2=>我',ch3=,他';

System.out.println("\""+chl+“\"的位置:"+(int)chl);

System.out.println('\""+ch2+"\"的位置:”+(int)ch2);

System.0111邛3"111(“\〃"+而3+"\"的位置:”+(1111;)(±3);

}

}

5.數(shù)組名字.length

6.數(shù)組名字.length

7.【代碼1】A,65

【代碼2】-127

[代碼3]123456.783,123456.78312

8.

【代碼11false

【代碼2】true

[代碼3]false

【代碼4】3

【代碼5】4.4

【代碼6】8.8

習(xí)題3

i.輸出no

if-else語句書寫的不夠規(guī)范,復(fù)合語句缺少大括號“{}",代碼不夠清晰。

2.你好好酷!!

3.

publicclassXiti3_3

{

publicstaticvoidmain(Stringargs[]){

intstartPosition=0,cndPosition=0;

charcStart='a,,cEnd=,fl,;

startPosition=(int)cStart;//cStart做int型轉(zhuǎn)換據(jù)運(yùn)算,并將結(jié)果賦值給startPosition

cndPosition=(int)cEnd;//cEnd做int型轉(zhuǎn)換運(yùn)算,并將結(jié)果賦值給cndPosition

System.out.println("俄文字母表:”);

fbr(inti=startPosition;i<=cndPosition;i++){

charc=W;

c=(char)i;〃i做char型轉(zhuǎn)換運(yùn)算,并將結(jié)果賦值給c

Systcm.out.print(n"+c);

if((i-startPosition+1)%10==0)

Systcm.out.println("");

publicclassXiti4

{publicstaticvoidmain(Stringargs[])

{doublesum=0,a=l;

inti=l;

while(i<=20)

{sum=sum+a;

i++;

a=a*i;

}

System.out.println(nsum="-i-sum);

}

classXiti5

{publicstaticvoidmain(Stringargs[])

{inti,j;

fdr(j=2j<=100;j-H-)

{for(i=2;i<=j/2;i++)

{if(j%i=O)

break;

if(i>j/2)

{Systcm.out.print("n+j);

6.

classXiti6

{publicstaticvoidmain(Stringargs[])

{doublesum=0,a=l,i=l;

while(i<=20)

{sum=sum+a;

i++;

a=(1.0/i)*a;

}

Sys[em.out.println("使用while循環(huán)計(jì)算的sum=',+sum);

fbr(sum=0,i=l,a=l;i<=20;i++)

{a=a*(1.0/i);

sum=sum+a;

)

System.out.println("使用for循環(huán)計(jì)算的sum="+sum);

publicclassXiti7

{publicstaticvoidmain(Stringargs[])

{intsum=0,ij;

fbr(i=l;i<=lOOO;i++)

{fbr(j=l,sum=O;j<i;j++)

{if(i%j==O)

sum=sumtj;

}

if(sum=i)

Systcm.out.printin("完數(shù):“+i);

8.方法之一

importjava.util.Scanner;

publicclassXiti8

{publicstaticvoidmain(Stringargs[]){

System.out.println("請輸入兩個(gè)非零正整數(shù),每輸入一個(gè)數(shù)回車確認(rèn),

Scannerreader=newScanner(System.in);

intm=0,n=0)temp=0,gy=0,gb=0,a,b;

a=m=reader.nextlnt();

b=n=reader.nextlnt();

iRmVn)

{temp=m;

m=n;

n=tcmp;

}

intr=m%n;

whilc(r!=O)

{n=m;

m=r;

r=m%n;

}

gy=n;

gb=a*b/gy;

System.out.println("最大公約數(shù):"+gy);

System.out.println("最小公倍數(shù):”+gb);

)

}

8.方法之二

importjava.util.Scanner;

publicclassXiti8{

publicstaticvoidmain(Stringargs[]){

System.oul.println("請輸入兩個(gè)非零正整數(shù),每輸入一個(gè)數(shù)回車確認(rèn),

Scannerreader=newScanner(System.in);

intm=0,n=0,t=0,gy=0,gb=0;

m=reader.nextlnt();

n=reader.nextlnt();

if(m>n){

t=m;

m=n;

n=t;

)

fbr(inti=l;i<=m;i++){

iRm%i==0&&n%i==0){

gy=i;

}

)

gb=m*n/gy;

System.out.println(m+,7,+n+H的最大公約數(shù)為H+gy);

System.out.println(m+”J+n+”的最小公倍數(shù)為H+gb);

}

publicclassXiti9

jpublicstaticvoidmain(Stringargs[])

{intn=l;

longsum=0,t=l;

t=n*t;

whilc(truc)

{sum=sum+t;

if(sum>9999)

break;

n++;

t=n*t;

)

System.out.println("滿足條件的最大整數(shù):”+(n-l));

)

}〃1至7的階乘和是sum=5913.0〃1至8的階乘和是sum=46233.0

習(xí)題4

i.用該類創(chuàng)建對象時(shí)。

2.所謂方法重載是在一個(gè)類中可以有多個(gè)方法具有相同的名字,但這些方法的參數(shù)必須

不同,即或者是參數(shù)的個(gè)數(shù)不同,或者是參數(shù)的類型不同。構(gòu)造方法可以重載。

3.可以。不可以。

4.不可以。

5.成員變量又分為實(shí)例變量和類變量,用static修飾的變量是類變量。那么類變量和實(shí)例

變量有什么區(qū)別呢?一個(gè)類通過使用new運(yùn)算符可以創(chuàng)建多個(gè)不同的對象,不同的對象的

實(shí)例變量將被分配不同的內(nèi)存空間;如果類中的成員變量有類變量,那么所有對象的這個(gè)

類變量都分配給相同的一處內(nèi)存,改變其中一個(gè)對象的這個(gè)類變量會影響其它對象的這個(gè)

類變量。也就是說對象共享類變量。

6.C,D

7.【代碼1】,【代碼4】

8.sum=-100

9.27

10.**20

##100

習(xí)題5

1.如果子類和父類在同■個(gè)包中,那么子類自然地繼承了其父類中不是private的成員變

量作為自己的成員變量,并且也自然地繼承了父類中不是private的方法作為自己的方法。

繼承的成員或方法的訪問權(quán)限保持不變。如果子類和父類不在同一個(gè)包中,那么子類繼承

了父類的protected、public成員變量做為子類的成員變量,并且繼承了父類的protected、

public方法為子類的方法,繼承的成員或方法的訪問權(quán)限保持不變。如果子類和父類不在

同一個(gè)包里,子類不能繼承父類的友好變量和友好方法。

只要子類中聲明的成員變量和父類中的成員變量同名時(shí),子類就隱藏了繼承的成員變

里O

子類中定義一個(gè)方法,這個(gè)方法的類型和父類的方法的類型一致或者是父類的方法的

類型的子類型,并且這個(gè)方法的名字、參數(shù)個(gè)數(shù)、參數(shù)的類型和父類的方法完全相同,子

類如此定義的方法稱作子類重寫的方法。子類通過方法的重寫可以隱藏繼承的方法。

2.不可以。

3.abstract類。

4.假設(shè)B類是A類子類或間接子類,當(dāng)我們用子類B創(chuàng)建一個(gè)對象,并把這個(gè)對象的引

用放到A類的對象中時(shí),稱這個(gè)A類對象是子類對象的上轉(zhuǎn)型對象。

5.可以把實(shí)現(xiàn)某一接口的類創(chuàng)建的對象的引用賦給該接口聲明的接口變量中。那么該接

口變量就可以調(diào)用被類實(shí)現(xiàn)的接口中的方法。

6.A,C,D

7.15.0

8.0

8.98.0

12

9.

classA

{publicfinalvoidR)

{charcStart='a',cEnd='z';

fbr(charc=cStart;c<=cEnd;c-H-)

{System.out.print(M0+c);

classBextendsA

{publicvoidg()

{charcStart='a',cEnd='(o';

fbr(charc=cStart;c<=cEnd;c-H-)

{System.out.print(MH+c);

publicclassXiti9

{publicstaticvoidmain(Stringargs[])

{Bb=newB();

b.f();

b.g();

}

}

10.

classA

{publicintftinta,intb){

if(b<a)

{inttemp=0;

temp=a;

a=b;

b=temp;

}

intr=b%a;

while(r!=0)

{b=a;

a=r;

r=b%a;

)

returna;

)

)

classBextendsA

{publicintf(inta,intb)

{intdivision=super.f(a,b);

return(a*b)/division;

}

}

publicclassXitilO

{publicstaticvoidmain(Stringargs[])

{Aa=newA();

Bb=newB();

System.out.println("最大公約數(shù):"+a.R36,24));

System.out.println("最小公倍數(shù):"+b.f(36,24));

習(xí)題6

i.仍然有效。

2.可以。

3.不可以。

4.大家好,祝工作順利!

5.96

乘數(shù)超過99

習(xí)題7

(1)Strategy是接口。

(2)Army不是抽象類。

(3)Army和Strategy是關(guān)聯(lián)關(guān)系。

(4)StrategyA,StrategyB>StrategyC與Strategy是實(shí)現(xiàn)關(guān)系。

第5章的例子13的UML類圖

3.

第5章的例子17的UML類圖

4.例子13的設(shè)計(jì)符合開-閉原則。

5.例子17的設(shè)計(jì)符合開-閉原則。

習(xí)題8

i.采用新增的策略為選手計(jì)算得分。

增加新的具體策略StrategyFouroStrategyFour類將doublecomputeScore(double[]a)方

法實(shí)現(xiàn)為去掉數(shù)組a的元素中的一個(gè)最大值和一個(gè)最小值,然后計(jì)算剩余元素的幾何平均

值。

importjava.util.Arrays;

publicclassStrategyFourimplementsComputablcStratcgy{

publicdoublecomputcScorc(doublc[]a){

if(a.lcngth<=2)

return0;

doublescorc=0,multi=1;

Arrays.sort(a);

intn=a.length-2;

fbr(inti=l;i<a.length-1;i++){

multi=multi*a[i];

}

scorc=Math.povv(multi,1.0/n);

returnscore;

}

}

2.

(1)策略(Strategy)PrintCharacter.java

publicinterfacePrintCharactcr{

publicabstractvoidprintTable(char[]a,char[]b);

}

(2)具體策略

PrintStrategyOne.java

publicclassPrintStrategyOneimplementsPrintCharactcr{

publicvoidprintTablc(char[]a,char[]b){

fbr(inti=0;i<a.length;i-H-){

Systcm.out.print(a[i]+,,,M);

}

fbr(inti=0;i<b.lcngth;i-H-){

System.out.print(b[i]+,V,);

I

Systcm.out.println(,"^);

}

1

PrintstrategyTwo.java

publicclassPrintstrategyTwoimplementsPrintCharactcr{

publicvoidprintTablc(char[]a,char[]b){

ibr(inti=0;i<a.lcngth;i-H-){

System.out.print(b[i]+',,H+a[i]+,7,);

(3)上下文PrintGame.java

publicclassPrintGame{

PrintCharacterstrategy;

publicvoidsetStrategy(PrintCharacterstrategy){

this.strategy=strategy;

}

publicvoidgetPersonScore(char[]a,char[]b){

ifi(strategy==null)

System.out.prinUn("sorry!”);

else

strategy.printTable(a,b);

)

}

應(yīng)用以上策略:

publicclassApplication{

publicstaticvoidmain(Stringargs[]){

char[]a=newchar[26];

char[]b=newchar[26];

fbr(inti=0;i<=25;i-H-){

a[i]=(char)('a,+i);

}

fbr(inti=0;i<=25;i-H-){

b[i]=(char)('A'+i);

)

PrintGamegame=newPrintGame();〃上下文對象

game.setStrategy(newPrintStrategyOne());//上下文對象使用策略一

System.out.prinlln("方案1:0);

game.getPersonScore(a,b);

game.setStrategy(newPrintStrategyTwo());〃上下文對象使用策略二

System.out.println(“方案2:”);

game.getPersonScore(a,b);

3.參照本章8.3.3自主完成。

習(xí)題9

1.A,B,D

2.Love:Game

3.13

abc夏日

4.13579

5.9javaHello

6.

publicclassXiti6{

publicstaticvoidmain(Stringargs[]){

Stringsl,s2,s3,tl-,ABCDabcdH;

System.out.primln("字符串原來是這個(gè)樣子:n+tl);

s1=t1.toUpperCase();

System.out.println("字符串中的小寫字母變成大寫是這個(gè)樣子:"十si);

s2=tl.toLowerCase();

System.out.println("字符串中的大寫字母變成小寫是這個(gè)樣子:"+s2);

s3=sl.concat(s2);

System.out.println("大寫字符串連接小寫字符串是這個(gè)樣子:”+s3);

7.

classXiti7

{publicstaticvoidmain(Stringargs[])

(Strings="中華人民共和國”;

chara=s.charAt(O);

charb=s.charAt(6);

System.out.println("第-個(gè)字符:H+a);

System.out.println("最后?個(gè)字符:"+b);

}

}

8.

importjava.util.*;

classXiti8

{publicstaticvoidmain(Stringargs[]){

intyear,month;

System.out.prinlln(”請輸入年份和月份,每輸入一個(gè)數(shù)回車確認(rèn)");

Scannerreader=newScanner(System.in);

year=reader.nextlnt();

month=reader.nextlnt();

String[]day=newString[42];

System.out.println(u日一二三四五六”);

Calendarrili=Calendar.getInstance();

rili.set(year,month-l,l);〃將日歷翻到y(tǒng)ear■年month月1日,注意。表示一月...11表示十二月

int星期幾=rili.get(Calendar.DAY_OF_WEEK)-l;

intdayAmount=0;

if(month=l||month=3||month=5||month=7||month=8||month=10||month=12)

dayAmount=31;

ifi(month==4||month==6||month==9||month==l1)

dayAmount=30;

iftmonth==2)

if(((year%4=0)&&(ycar%100!=0))||(ycar%400==0))

dayAmount=29;

else

dayAmount=28;

for(inti=O;i<星期兒;i++)

day[i]=,n,;

fbr(inti=ffl期兒,n=1;iv星期)L+dayAmount;i-H-){

if(n<=9)

day[i]=String.valucOf(n)+Mn;

else

day[i]=String.valucOf(n);

n++;

)

fbr(inti=星期兒+dayAmount;i〈42;i++)

day[i]=m,;

fbr(inti=O;i<星期幾;i++)

{day[i]=',**n;

)

for(inti=O;i<day.lcngth;i++)

{if(i%7=0)

{System.out.println('n,);

}

System.out.print(Hn+day[i]);

9.

importjava.util.*;

classXiti9

{publicstaticvoidmain(Stringargs[]){

intyear1,monthUday1,year2,month2,day2;

Scannerreader=newScanner(System.in);

Syslem.out.println("請輸入第一個(gè)日期的年份月份日期,每輸入一個(gè)數(shù)回車確認(rèn))

yearl=reader.nextlnt();

month1=reader.nextlnt();

dayl=reader.nextlnt();

System.out.println("請輸入第二個(gè)日期的年份月份日期,每輸入一個(gè)數(shù)回車確認(rèn))

year2=reader.nextlnt();

month2=reader.nextlnt();

day2=reader.nextlnt();

Calendarcalendar=Calendar.getInstance();

calendar.set(year1,monthl,day1);

longtimeYearl=calendar.getTimeInMillis();

calendar.set(year2,month2,day2);

longtimcYcar2=calcndar.gctTimcInMillis();

long相隔天數(shù)=1\4@由石65((爪11。丫。@11』0^丫0@「2)/(1000*60*60*24));

Systcm.out.pnntln(n"+ycar1+',^,'+month1+“月”+day1+“日和”+

ycar2+“年"+month2+“月”+day2+“日相隔”+相隔天數(shù)+“天”);

10.

publicclassXitilO

{publicstaticvoidmain(Stringargs[])

{doublea=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(l);

System.out.println(c);

c=Math.Iog(8);

System.out.println(c);

習(xí)題10

1.BorderLayout布局。

2.不可以。

3.A,Co

4.

importjava.util.StringTokcnizer;

importjava.awt.*;

importjava.awt.cvent.*;

importjavax.swing.*;

publicclassXiti4

{publicstaticvoidmain(Stringargs[])

{ComputcrFramcfr=ncwComputcrFramc();

fr.setTitle("計(jì)算的窗口)

}

}

classComputcrFramcextendsJFramcimplementsTcxtListcncr

{TcxtArcatcxtl,tcxt2;

intcount=l;

doublesum=0,avcr=0;

publicComputerFrameO

{setLayout(ncwFlowLayout());

text1=ncwTcxtArea(6,20);

tcxt2=ncwTextArca(6,20);

add(tcxtl);

add(text2);

tcxt2.sctEditablc(false);

tcxtl.addTcxtListcncr(this);

sctSize(300,320);

setVisiblc(truc);

addWindowListcncr(ncwWindowAdaptcr()

{publicvoidwindowClosing(WindowEvcnte)

{System.cxit(O);

}

});

validatc();

}

publicvoidtcxtValucChangcd(TcxtEvcntc)

{Strings=tcxtl.gctText();

sum=0;

aver=0;

StringTokcnizcrfcnxi=ncwStringTokcnizer(s,M^nu,);

intn=fcnxi.countTokcns();

count=n;

doublea[]=newdoublc[n];

for(inti=0;i<=n-l;i++)

{Stringtcmp=fcnxi.nextTokcn();

try{a[i]=Doublc.parscDoublc(tcmp);

sum=sum+a[i];

}

catch(Exccptioncc)

{count—;

}

}

avcr=sum/count;

tcxt2.sctTcxt(null);

tcxt2.appcnd('*\n和:"+sum);

tcxt2.appcnd(H\n平均值:“+avcr);

)

}

5.

importjava.applet.*;

importjava.awt.*;

importjava.awt.event.*;

publicclassXiti5

{publicstaticvoidmain(Stringargs[])

{ComputerFramefr=newComputerFrame();

fhsetTitle(“計(jì)算”);

}

}

classComputerFrameextendsFrameimplementsActionListener

{TextFieldtextl,text2,text3;

Buttonbutton1,button2,button3,button4;

Labellabel;

publicComputerFrame()

{setLayout(newFlowLayout());

textl=newTextField(lO);

text2=newTextField(lO);

text3=newTextField(10);

label=newLabei(nn,LabeLCENTER);

labeLsetBackground(Color.green);

add(textl);

add(label);

add(text2);

add(text3);

buttonl=newButton(“加");

button2=newButton,減)

button3=newButton(“乘");

button4=newButton("除");

add(buttonl);

add(button2);

add(button3);

add(button4);

button1.addActionListener(this);

button2.addActionListener(this);

button3.addActionListener(this);

button4.addActionListener(this);

setSize(300,320);

setVisiblc(true);

addWindowListcncr(newWindowAdaptcr()

{publicvoidwindowClosing(WindowEvcnte)

{System.cxit(O);

}

});

validatc();

}

publicvoidactionPcrfbrmcd(ActionEvcntc)

{doublen;

if(e.gctSourcc()=button1)

{doublenl,n2;

try{nl=Doublc.parscDoublc(tcxt1.gctTcxt());

n2=Doublc.parscDouble(tcxt2.gctTcxt());

n=nl+n2;

tcxt3.sctTcxt(String.valucOf(n));

label.sctTcxt(M+H);

}

catch(NumbcrFormatExccptioncc)

{text3.setText("請輸入數(shù)字字符”);

)

)

elseif[c.gctSourcc()=button2)

{doublenl,n2;

try{nl=Doublc.parscDouble(tcxt1.getText());

n2=Doublc.parscDouble(tcxt2.gctTcxt());

n=nl-n2;

tcxt3.sctTcxt(String.valucOf(n));

label.setTcxt(',-M);

)

catch(NumbcrFormatExccptioncc)

{text3.setText("請輸入數(shù)字字符");

)

)

elseif(c.getSourcc()=button3)

{doubleni,n2;

try{nl=Doublc.parscDoublc(tcxt1.gctTcxt());

n2=Doublc.parscDouble(tcxt2.gctTcxt());

n=nl*n2;

tcxt3.sctTcxt(String.valucOf(n));

label.sctTcxt('**M);

}

catch(NumbcrFormatExccptioncc)

{text3.setText("請輸入數(shù)字字符”);

)

}

elseif(c.gctSourcc()==button4)

{doublenl,n2;

try(n1=Doublc.parscDoublc(tcxtI.gctTcxt());

n2=Doublc.parscDouble(tcxt2.gctTcxt());

n=nl/n2;

text3.setText(String.valueOf(n));

label.sctTcxt('7");

}

catch(NumbcrFonnatExccptionce)

{text3.setText("請輸入數(shù)字字符,');

)

}

validatc();

6.

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

publicclassXiti6

{publicstaticvoidmain(Stringargs[])

{newWindowPanel();

)

}

classMypanelextendsJPanelimplementsActionListener

{Buttonbutton;

TextFieldtext;

Mypanel()

{button=newButton—);

text=newTextField(12);

add(button);

add(text);

button.addActionListener(this);

}

publicvoidactionPerfbrmed(ActionEvente)

{Stringname=text.getText();

if(name.length()>0)

button.setLabel(name);

validateQ;

classWindowPanelextendsFrame

{Mypanelpanell,pane!2;

WindowPanel()

{panell=newMypanel();

pane!2=newMypanel();

panel1.setBackground(Color.red);

pane!2.setBackground(Color.biue);

add(panel1,BorderLayout.SOUTH);

add(pane12,BorderLayout.NORTH);

setSize(300,320);

setVisible(true);

addWindowListener(newWindowAdapter()

{publicvoidwindowClosing(WindowEvente)

{System.exit(O);

}

));

validatc();

7.參見10.13,參照本章例子10.21o

8.

importjava.awt.*;

importjava.awt.evcnt.*;

importjavax.swing.*;

publicclassXiti8

{publicstaticvoidmain(Stringargs[])

{MoveFramcf=newMovcFramc();

f.sctBounds(l2,12,300,300);

f.sctVisiblc(truc);

fsetTitle("移動,

f.validate();

f.addWindowListcncr(ncwWindowAdaptcr()

{publicvoidvvindowClosing(WindowEvcnte)

{Systcm.cxit(O);

}

classMovcFrameextendsJFrameimplementsActionListcncr

{JButtoncontrolButtonjnovcdButton;

publicMovcFrame()

{controlButton=newJButton("單擊我運(yùn)動另一一個(gè)按鈕”);

controlButton.addActionListcncr(this);

movedButton=newJButton();

movedButton.setBackground(newColor(12,200,34));

sctLayout(null);

add(controlButton);

add(movedButton);

controlButton.sctBounds(10,30,130,30);

movedButton.sctBounds(100,100,10,10);

(

publicvoidactionPcrformcd(ActionEvcntc)

{intx=movcdButton.gctBounds().x;

inty=movcdButton.gctBounds().y;

x=x+5;

y=y+l;

movedButton.sctLocation(x,y);

if(x>200)

{x=100;

y=100;

9.

importjava.avvt.*;

importjava.awt.event.*;

publicclassXiti9

{publicstaticvoidmain(Stringargs[])

{Winwin=newWin();

}

}

classWinextendsFrameimplementsKeyListener

{Buttonb[]=newButton[8];

intx,y;

Win()

{setLayout(newFlowLayout());

fbr(inti=0;i<8;i-H-)

{b[i]=newButton(,n'+i);

b[i].addKeyListener(this);

add(b[i]);

)

addWindowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente){

System.exit(O);

}

));

setBounds(10,10,300,300);

setVisible(true);

validate();

}

publicvoidkeyPressed(KeyEvente)

{intmoveDistance=l;

Componentcom=(Component)e.getSource();

intx=(int)com.getBounds().x;

inty=(int)com.getBounds().y;

Componentcomponent[]=this.getComponents();

ifi(e.getKeyCode()==KeyEvent.VK_UP)

{y=y-moveDistance;

com.setLocation(x,y);

RectanglecomRect=com.getBounds();

fbr(intk=0;k<component.length;k++)

{RectangleorthRect=component[k].getBounds();

if{comRersects(orthRect)&&com!=component[k])

{y=y+moveDistance;

com.setLocation(x,y);

break;

)

}

if(y<=0)y=10;

}

elseif(e.getKeyCode()=KeyEvent.VK_DOWN)

{y=y+moveDistance;

com.setLocation(x,y);

RectanglecomRect=com.getBounds();

fbr(intk=0;k<componcnt.lcngth;k-H-)

{RectangleorthRcct=componcnt[k].gctBounds();

if(comRcrsects(orthRcct)&&com!=componcnt[k])

{y=y-movcDistance;

com.sctLocation(x,y);

break;

}

}

if(y>=300)y=300;

}

elseif(c.gctKeyCodc()=KcyEvcnt.VK_LEFT)

{x=x-moveDistancc;

com.setLocation(x,y);

RectanglecomRcct=com.gctBounds();

fbr(intk=0;k<componcnt.lcngth;k-H-)

{RectangleorthRcct=componcnt[k].gctBounds();

if(comRcrsccts(orthRcct)&&com!=componcnt[k])

{x=x+movcDistancc;

com.sctLocation(x,y);

break;

}

}

if(x<=0)x=0;

}

elseif(c.gctKcyCodc()=KcyEvcnt.VK_RIGHT)

{x=x+movcDistance;

com.setLocation(x,y);

RectanglecomRcct=com.gctBounds();

fbr(intk=0;k<componcnt.lcngth;k-H-)

{RectangleorthRcct=componcnt[k].gctBounds();

if(comRcrsccts(orthRcct)&&coni!=componcnt[k])

{x=x-movcDistance;

com.sctLocation(x,y);

break;

}

}

if(x>=300)x=300;

}

)

publicvoidkcyTypcd(KcyEvcnte){}

publicvoidkeyReleased(KeyEventc){}

習(xí)題11

1.A

2.

importjava.awt.event.*;

importjava.awt.*;

importjavax.swing.*;

classDwindowextendsFrameimplementsActionListcncr

{TcxtFicldinputNumber;

TcxtArcasave;

Dwindow(Strings)

{supcr(s);

inputNumbcr=ncwTcxtField(22);

inputNumbcr.addActionListcncr(this);

savc=ncwTextArca(12,16);

setLayout(newFlowLayout());

add(inputNumbcr);

add(save);

sctBounds(60,60,300,300);

sctVisiblc(truc);

validatc();

addWindowListcncr(ncwWindowAdaptcr()

{publicvoidwindowClosing(WindowEvcntc)

{Systcm.cxit(O);

}

(

);

}

publicvoidactionPcrfbrmcd(ActionEvcntevent)

{Strings=inputNumbcr.gctText();

doublen=0;

try{n=Doublc.parscDoublc(s);

ifi[n>1000)

{intscl8t=JOptionPanc.showConfimiDiabg(ti”s/'已經(jīng)超過1000確認(rèn)正確嗎?",“確認(rèn)對話框”,

JOptionPanc.YES_NO_OPTION);

if(sclcct=JOptionPanc.YES_OPTION)

{save.appcnd("\nH+s);

溫馨提示

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

最新文檔

評論

0/150

提交評論