版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二四年供應(yīng)鏈金融合作合同擔(dān)保協(xié)議2篇
- 2025年度旅游項(xiàng)目承包經(jīng)營權(quán)轉(zhuǎn)讓合同規(guī)范文本4篇
- 個(gè)人2024年度藝術(shù)品買賣合同5篇
- 二零二五版智能生產(chǎn)車間承包施工合同3篇
- 安防工程合同書
- 網(wǎng)站會員注冊合同書
- 2025年度測繪數(shù)據(jù)保密管理及維護(hù)合同4篇
- 辦公樓一層租賃合同
- 二零二四年度新能源電池組裝委托加工合同3篇
- 二零二五版礦業(yè)權(quán)出讓與礦產(chǎn)資源開發(fā)合作合同范本3篇
- 【探跡科技】2024知識產(chǎn)權(quán)行業(yè)發(fā)展趨勢報(bào)告-從工業(yè)轟鳴到數(shù)智浪潮知識產(chǎn)權(quán)成為競爭市場的“矛與盾”
- 《中國政法大學(xué)》課件
- GB/T 35270-2024嬰幼兒背帶(袋)
- 2024-2025學(xué)年高二上學(xué)期期末數(shù)學(xué)試卷(新題型:19題)(基礎(chǔ)篇)(含答案)
- 2022版藝術(shù)新課標(biāo)解讀心得(課件)小學(xué)美術(shù)
- 七上-動點(diǎn)、動角問題12道好題-解析
- 2024年九省聯(lián)考新高考 數(shù)學(xué)試卷(含答案解析)
- 紅色歷史研學(xué)旅行課程設(shè)計(jì)
- 下運(yùn)動神經(jīng)元損害綜合征疾病演示課件
- 2023中考地理真題(含解析)
- JJF 1101-2019環(huán)境試驗(yàn)設(shè)備溫度、濕度參數(shù)校準(zhǔn)規(guī)范
評論
0/150
提交評論