版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Java面向?qū)ο蟪绦蛟O(shè)計(jì)
清華大學(xué)出版社
(編著耿祥義張躍平)
習(xí)題解答
建議使用文檔結(jié)構(gòu)圖
(選擇Word菜單好視圖玲文檔結(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.lang.NoClassDefFoundError:xiti8(wrongname:
Xiti8)
執(zhí)行javaXiti8.class得到的錯(cuò)誤提示
Exceptioninthread"main"java.lang.NoClassDefFoundError:Xiti8/class
執(zhí)行javaXiti8得到的輸出結(jié)果
I'mgladtomeetyou
9.屬于操作題,解答略。
習(xí)題2
1.D
2.【代碼1】【代碼2】錯(cuò)誤〃【代碼3】更正為floatz=6.89F;
3.float型常量后面必須要有后綴"f"或"F"。
對于double常量,后面可以有后綴"d"或"D",但允許省略該后綴。
4.publicclassXiti4{
publicstaticvoidmain(Stringargs[]){
charchl=你,ch2=,我,,ch3='他';
System.out.println("\""+chl+"\"的位置:"+(int)chl);
System.out.println("\""+ch2+“\"的位置:"+(int)ch2);
System.out.println("\""+ch3+“\"的位置:"+(int)ch3);
}
)
5.數(shù)組名字.length
6.數(shù)組名字.length
7.[代碼1]A,65
【代碼2】-127
[代碼3】123456.783,123456.78312
8.
[代碼1]false
【代碼2】true
【代碼3】false
【代碼4】3
【代碼5】4.4
【代碼6】8.8
習(xí)題3
輸出110
if-else語句書寫的不夠規(guī)范,復(fù)合語句缺少大括號(hào)代碼不夠清晰。
2.你好好酷!!
3.
publicclassXiti3__3
(
publicstaticvoidmain(Stringargs[]){
intstartPosition=0,endPosition=0;
,,,
charcStart=a/cEnd='a;
startPosition=(int)cStart;//cStart做int型轉(zhuǎn)換據(jù)運(yùn)算,并將結(jié)果賦值給
startPosition
endPosition=(int)cEnd;//cEnd做int型轉(zhuǎn)換運(yùn)算,并將結(jié)果賦值給
endPosition
System.out.printing俄文字母表:”);
for(inti=startPosition;i<=endPosition;i++){
charc='\0';
c=(char)i;〃i做char型轉(zhuǎn)換運(yùn)算,并將結(jié)果賦值給c
System.out.print("n+c);
if((i-startPosition+l)%10==0)
System.out.printlnC1");
}
}
)
4.
publicclassXiti4
{publicstaticvoidmain(Stringargs[])
{doublesum=0,a=l;
inti=l;
while(i<=20)
{sum=sum+a;
i++;
a=a*i;
}
System.out.println("sum="+sum);
}
}
5.
classXiti5
{publicstaticvoidmain(Stringargs[])
{inti,j;
for(j=2;j<=100;j++)
{for(i=2;i<=j/2;i++)
{if(j%i==O)
break;
)
if(i>j/2)
{System.out.print(""+j);
)
)
}
)
6.
classXiti6
{publicstaticvoidmain(Stringargs[])
{doublesum=Oza=l,i=l;
while(i<=20)
{sum=sum+a;
i++;
a=(1.0/i)*a;
)
System.out.println("使用while循環(huán)計(jì)算的sum="+sum);
for(sum=0,i=l,a=l;i<=20;i++)
{a=a*(1.0/i);
sum=sum+a;
)
System.out.printing使用for循環(huán)計(jì)算的sum="+sum);
}
}
7.
publicclassXiti7
{publicstaticvoidmain(Stringargs[])
{intsum=0,ij;
for(i=l;i<=1000;i++)
{for(j=l,sum=0;j<i;j++)
{if(i%j==O)
sum=sum+j;
}
if(sum==i)
System,out.printin(“完數(shù):“+i);
)
)
}
8.方法之一
importjava.util.Scanner;
publicclassXiti8
{publicstaticvoidmain(Stringargs[]){
System.out.printin("請輸入兩個(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();
if(m<n)
{temp=m;
m=n;
n=temp;
)
intr=m%n;
while(r!=O)
{n=m;
m=r;
r=m%n;
)
gy=n;
gb=a*b/gy;
System.out.println("最大公約數(shù):"+gy);
System.out.printing最小公倍數(shù):"+gb);
)
}
8.方法之二
importjava.util.Scanner;
publicclassXiti8{
publicstaticvoidmain(Stringargs[]){
System.out.printin("請輸入兩個(gè)非零正整數(shù),每輸入一個(gè)數(shù)回車確認(rèn)");
Scannerreader=newScanner(System.in);
intm=0,n=0,t=0zgy=0,gb=0;
m=reader.nextlnt();
n=reader.nextlnt();
if(m>n){
t=m;
m=n;
n=t;
)
for(inti=l;i<=m;i++){
if(m%i==O&&n%i==O){
gy=i;
)
}
gb=m*n/gy;
System.out.println(m+"J+n+”的最大公約數(shù)為"+gy);
System.out.println(m+”J+n+”的最小公倍數(shù)為H+gb);
)
)
9.
publicclassXiti9
{publicstaticvoidmain(Stringargs[])
{intn=l;
longsum=0,t=l;
t=n*t;
while(true)
{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
1.用該類創(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è)類變量會(huì)影響其它對象的這個(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í),子類就隱藏了繼承的成
員變量。
子類中定義一個(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
{publicfinalvoidf()
{charcStart='a,,cEnd=,z';
for(charc=cStart;c<=cEnd;c++)
{System.out.print("H+c);
)
}
}
classBextendsA
{publicvoidg()
{charcStart='a:cEnd=U';
for(charc=cStart;c<=cEnd;c++)
{System.out.print(""+c);
)
)
}
publicclassXiti9
{publicstaticvoidmain(Stringargs[])
{Bb=newB();
b.f();
b-g();
}
)
10.
classA
{publicintf(intajntb){
if(b<a)
{inttemp=0;
temp=a;
a=b;
b=temp;
)
intr=b%a;
while(r!=O)
{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.printin("最大公約數(shù):"+a.f(36,24));
System.out.printin("最小公倍數(shù):"+b.f(36,24));
}
}
習(xí)題6
1.仍然有效。
2.可以。
3.不可以。
4.大家好,祝工作順利!
5.96
乘數(shù)超過99
習(xí)題7
1.
(1)Strategy是接口。
(2)Army不是抽象類。
(3)Army和Strategy是關(guān)聯(lián)關(guān)系。
(4)StrategyA,StrategyB>StrategyC與Strategy是實(shí)現(xiàn)關(guān)系。
2.
3.
4.例子13的設(shè)計(jì)符合開-閉原則。
5.例子17的設(shè)計(jì)符合開-閉原則。
習(xí)題8
采用新增的策略為選手計(jì)算得分。
增加新的具體策略StrategyFour°StrategyFour類將doublecomputeScore(double[]
a)方法實(shí)現(xiàn)為去掉數(shù)組a的元素中的一個(gè)最大值和一個(gè)最小值,然后計(jì)算剩余元
素的兒何平均值。
importjava.util.Arrays;
publicclassStrategyFourimplementsComputableStrategy{
publicdoublecomputeScore(double[]a){
if(a.length<=2)
return0;
doublescore=0,multi=l;
Arrays.sort(a);
intn=a.length-2;
for(inti=l;i<a.length-l;i++){
multi=multi*a[i];
)
score=Math.pow(multi/1.0/n);
returnscore;
)
}
2.
⑴策略(Strategy)PrintCharacter.java
publicinterfacePrintCharacter{
publicabstractvoidprintTable(char[]a,char[]b);
}
(2)具體策略
PrintStrategyOne.java
publicclassPrintStrategyOneimplementsPrintcharacter{
publicvoidprintTable(char[]a,char[]b){
for(inti=O;i<a.length;i++){
,,n
System.out.print(a[i]+/);
)
for(inti=O;i<b.length;i++){
System.out.print(b[i]+"/");
)
System.out.println(,,n);
)
}
PrintStrategyTwo.java
publicclassPrintStrategyTwoimplementsPrintcharacter{
publicvoidprintTable(char[]a,char[]b){
for(inti=O;i<a.length;i++){
System.out.prinHNi-liW'J);
)
}
}
(3)上下文PrintGame.java
publicclassPrintGame{
Printcharacterstrategy;
publicvoidsetStrategy(PrintCharacterstrategy){
this.strategy=strategy;
}
publicvoidgetPersonScore(char[]a,char[]b){
if(strategy==null)
System.out.println(nsorry!");
else
strategy.printTable(a,b);
}
)
應(yīng)用以上策略:
publicclassApplication{
publicstaticvoidmain(Stringargs[]){
char[]a=newchar[26];
char[]b=newchar[26];
for(inti=0;i<=25;i++){
a[i]=(char)('a'+i);
}
for(inti=0;i<=25;i++){
b[i]=(char)('A'+i);
}
PrintGamegame=newPrintGame();〃上下文對象
game.setStrategy(newPrintStrategyOne());〃上下文對象使用策略一
System.out.printin(“方案1:");
game.getPersonScore(a,b);
game.setStrategy(newPrintStrategyTwo());〃上下文對象使用策略二
System.out.printin("方案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[]){
H
Stringsl,s2zs3,tl=ABCDabcd";
System.out.printin("字符串原來是這個(gè)樣子:"+tl);
sl=tl.tollpperCase();
System.out.printin("字符串中的小寫字母變成大寫是這個(gè)樣子:n+sl);
s2=tl.toLowerCase();
System.out.println("字符串中的大寫字母變成小寫是這個(gè)樣子:"+s2);
s3=sl.concat(s2);
System.out.printin(“大寫字符串連接小寫字符串是這個(gè)樣子:"+s3);
)
}
7.
classXiti7
{publicstaticvoidmain(Stringargs[])
{Strings="中華人民共和國“;
chara=s.charAt(O);
charb=s.charAt(6);
System,out.printin("第一個(gè)字符:"+a);
System,out.printin("最后一個(gè)字符:H+b);
}
)
8.
importjava.util.*;
classXiti8
{publicstaticvoidmain(Stringargs[]){
intyear,month;
System.out.println("請輸入年份和月份,每輸入一個(gè)數(shù)回車確認(rèn)");
Scannerreader=newScanner(System.in);
year=reader.nextlnt();
month=reader.nextlnt();
String[]day=newString[42];
System.out.println(H日一二三四五六");
Calendarrili=Calendar.getlnstance();
riliset(year,month-1,1);〃將日歷翻到y(tǒng)ear年month月1日,注意0表示一
月…11表示十二月
intSft|JL=rili.get(Calendar.DAY_OF_WEEK)-l;
intdayAmount=0;
if(month==l||month==311month==511month==7||month==811month==1011mont
h==12)
dayAmount=31;
if(month==4||month==6||month==9||month==ll)
dayAmount=30;
if(month==2)
if(((year%4==0)&&(year%100!=0))||(year%400==0))
dayAmount=29;
else
dayAmount=28;
for(inti=O;i<星期幾;i++)
day[i]二”";
for(inti二星期幾,n=l;i<星期幾+dayAmount;i++){
if(n<=9)
day[i]=String.valueOf(n)+"";
else
day[i]=String.valueOf(n);
n++;
}
for(inti=星期幾+dayAmount;i<42;i++)
day[i]="";
for(inti=O;i<星期幾;i++)
{day[i]="**";
}
for(inti=O;i<day.length;i++)
{if(j%7==o)
{System.out.println(,H,);
)
System.out.print(""+day[i]);
}
}
}
9.
importjava.util.*;
classXiti9
{publicstaticvoidmain(Stringargs[]){
intyearl/monthl,dayl/year2/month2,day2;
Scannerreader=newScanner(System.in);
System.out.println("請輸入第一個(gè)日期的年份月份日期,每輸入一個(gè)數(shù)回車
確認(rèn))
yearl=reader.nextlnt();
monthl=reader.nextlnt();
dayl=reader.nextlnt();
System.out.printin("請輸入第二個(gè)日期的年份月份日期,每輸入一個(gè)數(shù)回車
確認(rèn))
year2=reader.nextlnt();
month2=reader.nextlnt();
day2=reader.nextlnt();
Calendarcalendar=Calendar.getlnstance();
calendar.set(yearl,monthl,dayl);
longtimeYearl=calendar.getTimelnMillis();
calendar.set(year2,month2,day2);
longtimeYear2=calendar.getTimelnMillis();
long相隔天數(shù)二Math.abs((timeYearl?timeYear2)/(1000*60*60*24));
System.out.println(,,,,+yearl+"^"+monthl+,,/1"+dayl+"H和”+
year2+“年”+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.log(8);
System.out.println(c);
}
)
習(xí)題10
1.BorderLayout布局。
2.不可以。
3.A,Co
4.
importjava.util.StringTokenizer;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassXiti4
{publicstaticvoidmain(Stringargs[])
{ComputerFramefr=newComputerFrame();
fr.setTitle("計(jì)算的窗口");
)
}
classComputerFrameextendsJFrameimplementsTextListener
{TextAreatextlztext2;
intcount=l;
doublesum=0,aver=0;
publicComputerFrame()
{setLayout(newFlowLayout());
textl=newTextArea(6,20);
text2=newTextArea(6,20);
add(textl);
add(text2);
text2.setEditable(false);
textl.addTextListener(this);
setSize(300,320);
setVisible(true);
addWindowListener(newWindowAdapter()
{publicvoidwindowClosing(WindowEvente)
{System.exit(O);
)
});
validate();
}
publicvoidtextValueChanged(TextEvente)
{Strings=textl.getText();
sum=0;
aver=O;
StringTokenizerfenxi=newStringTokenizer(s,"/Xn*");
intn=fenxi.countTokens();
count=n;
doublea[]=newdouble[n];
for(inti=0;i<=n-l;i++)
{Stringtemp=fenxi.nextToken();
try{a[i]=Double.parseDouble(temp);
sum=sum+a[i];
)
catch(Exceptionee)
{count-;
}
}
aver=sum/count;
text2.setText(null);
text2.append("\n和:"+sum);
text2.append("\n平均值:"+averj;
}
)
5.
importjava.applet.*;
importjava.awt.*;
importjava.awt.event.*;
publicclassXiti5
{publicstaticvoidmain(Stringargs[])
{ComputerFramefr=newComputerFrame();
fr.setTitle(“計(jì)算)
}
}
classComputerFrameextendsFrameimplementsActionListener
{TextFieldtextl,text2,text3;
Buttonbuttonl,button2,buttons,button4;
Labellabel;
publicComputerFrame()
{setLayout(newFlowLayout());
textl=newTextField(lO);
text2=newTextField(lO);
text3=newTextField(lO);
label=newLabel(K",Label.CENTER);
label.setBackground(Color.green);
add(textl);
add(label);
add(text2);
add(text3);
buttonl=newButton("力IT);
button2=newButton(“減”);
button3=newButton(“乘”);
button4=newButton(“除");
add(buttonl);
add(button2);
add(button3);
add(button4);
buttonl.addActionListener(this);
button2.addActionListener(this);
buttons.addActionListener(this);
button4.addActionListener(this);
setSize(300,320);
setVisible(true);
addWindowListener(newWindowAdapter()
{publicvoidwindowClosing(WindowEvente)
{System.exit(O);
)
});
validate();
)
publicvoidactionPerformed(ActionEvente)
{doublen;
if(e.getSource()==buttonl)
{doublenl,n2;
try{nl=Double.parseDouble(textl.getText());
n2=Double.parseDouble(text2.getText());
n=nl+n2;
text3.setText(String.valueOf(n));
label.setText("+");
)
catch(NumberFormatExceptionee)
{text3.setText("請輸入數(shù)字字符”);
)
}
elseif(e.getSource()==button2)
{doublenl,n2;
try{nl=Double.parseDouble(textl.getText());
n2=Double.parseDouble(text2,getText());
n=nl-n2;
text3.setText(String.valueOf(n));
label.setText(,,J,);
}
catch(NumberFormatExceptionee)
{text3.setText("請輸入數(shù)字字符”);
)
}
elseif(e.getSource()==button3)
{doublenl,n2;
try{nl=Double.parseDouble(textl.getText());
n2=Double.parseDouble(text2.getText());
n=nl*n2;
text3.setText(String.valueOf(n));
label.setText("*");
)
catch(NumberFormatExceptionee)
{text3.setText("請輸入數(shù)字字符)
)
)
elseif(e.getSource()==button4)
{doublenl,n2;
try{nl=Double.parseDouble(textl.getText());
n2=Double.parseDouble(text2,getText());
n=nl/n2;
text3.setText(String.valueOf(n));
label.setText("/");
)
catch(NumberFormatExceptionee)
{text3.setText("請輸入數(shù)字字符)
)
}
validate();
}
}
6.
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassXiti6
{publicstaticvoidmain(Stringargs[])
{newWindowPanel();
}
}
classMypanelextendsJPanelimplementsActionListener
{Buttonbutton;
TextFieldtext;
Mypanel()
{button=newButton(H
text=newTextField(12);
add(button);
add(text);
button.addActionListener(this);
)
publicvoidactionPerformed(ActionEvente)
{Stringname=text.getText();
if(name.length()>0)
button.setLabel(name);
validate();
}
)
classWindowPanelextendsFrame
{Mypanelpanell,panel2;
WindowPanel()
{panell=newMypanel();
panel2=newMypanel();
panell.setBackground(Color.red);
panel2.setBackground(Color.blue);
add(panell,BorderLayout.SOUTH);
add(panel2,BorderLayout.NORTH);
setSize(300,320);
setVisible(true);
addWindowListener(newWindowAdapter()
{publicvoidwindowClosing(WindowEvente)
{System.exit(O);
}
});
validate();
}
)
7.參見10.13,參照本章例子10.21o
8.
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassXiti8
{publicstaticvoidmain(Stringargs[])
{MoveFramef=newMoveFrame();
f.setBounds(12,12,300,300);
f.setVisible(true);
f.setTitle("移動(dòng))
f.validate();
f.addWindowListener(newWindowAdapter()
{publicvoidwindowClosing(WindowEvente)
{System.exit(O);
}
}
);
}
}
classMoveFrameextendsJFrameimplementsActionListener
{JButtoncontrolButton,movedButton;
publicMoveFrame()
{controlButton=newJButton("單擊我運(yùn)動(dòng)另一個(gè)按鈕");
controlButton.addActionListener(this);
movedButton=newJButton();
movedButton.setBackground(newColor(12,200,34));
setLayout(null);
add(controlButton);
add(movedButton);
controlButton.setBounds(10,30,130,30);
movedButton.setBounds(100,100,10,10);
}
publicvoidactionPerformed(ActionEvente)
{intx=movedButton.getBounds().x;
inty=movedButton.getBounds().y;
x=x+5;
y=y+i;
movedButton.setLocation(x,y);
if(x>200)
{x=100;
y=100;
}
}
}
9.
importjava.awt.*;
importjava.awt.event.*;
publicclassXiti9
{publicstaticvoidmain(Stringargs[])
{Winwin=newWin();
}
)
classWinextendsFrameimplementsKeyListener
{Buttonb[]=newButton[8];
intx,y;
Win()
{setLayout(newFlowLayout());
for(inti=0;i<8;i++)
{b[i]=newButton(H"+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();
if(e.getKeyCode()==KeyEvent.VK_UP)
{y=y-moveDistance;
com.setLocation(x,y);
RectanglecomRect=com.getBounds();
for(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();
for(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>=300)y=300;
)
elseif(e.getKeyCode()==KeyEvent.VK__LEFT)
{x=x-moveDistance;
com.setLocation(x,y);
RectanglecomRect=com.getBounds();
for(intk=0;k<component.length;k++)
{RectangleorthRect=component[k].getBounds();
if(comRersects(orthRect)&&com!=component[k])
{x=x+moveDistance;
com.setLocation(x,y);
break;
)
)
if(x<=0)x=0;
)
elseif(e.getKeyCode()==KeyEvent.VK__RIGHT)
{x=x+moveDistance;
com.setLocation(x,y);
RectanglecomRect=com.getBounds();
for(intk=0;k<component.length;k++)
{RectangleorthRect=component[k].getBounds();
if(comRersects(orthRect)&&com!=component[k])
{x=x-moveDistance;
com.setLocation(x,y);
break;
)
)
if(x>=300)x=300;
}
)
publicvoidkeyTyped(KeyEvente){}
publicvoidkeyReleased(KeyEvente){}
}
習(xí)題11
1.A
2.
importjava.awt.event.*;
importjava.awt.*;
importjavax.swing.*;
classDwindowextendsFrameimplementsActionListener
{TextFieldinputNumber;
TextAreasave;
Dwindow(Strings)
{super⑸;
inputNumber=newTextField(22);
inputNumber.addActionListener(this);
save=newTextArea(12,16);
setLayout(newFlowLayout());
add(inputNumber);
add(save);
setBounds(60,60,300,300);
setVisible(true);
validate();
addWindowListener(newWindowAdapter()
{publicvoidwindowClosing(WindowEvente)
{System.exit(O);
}
)
}
publicvoidactionPerformed(ActionEventevent)
{Strings=inputNumber.getText();
doublen=0;
try{n=Double.parseDouble(s);
if(n>1000)
{intselect=JOptionPane.showConfirmDialog(this,"已經(jīng)超過1000
確認(rèn)正確嗎?T確認(rèn)對話框)
JOptionPane.YES_NO_OPTION);
if(select==JOptionPane.YES_OPTION)
{save.append(,,\n"+s);
)
else
{inputNumber.setText(null);
)
}
else
{save.append(”\n”+s);
}
)
catch(NumberFormatExceptione)
{JOptionPane.showMessageDialog(thisJ您輸入了非法字符”J警告對
話框、
JOptionPane.WARNING_MESSAGE);
inputNumber.setText(null);
)
)
}
publicclassE
{publicstaticvoidmain(Stringargs[])
{newDwindow("帶對話框的窗口)
)
}
3.參照以下例子完成
Xiti3.java
publicclassXiti3{
publicstaticvoidmain(Stringargs[]){
WindowColorwin=newWindowColor();
win.setTitle("帶顏色對話框的窗口");
)
)
WindowColor.java
importjava.awt.event.*;
importjava.awt.*;
importjavax.swing.*;
publicclassWindowColorextendsJFrameimplementsActionListener{
JButtonbutton;
WindowColor(){
button=newJButton("打開顏色對話框”);
button.addActionListener(this);
setLayout(newFlowLayout());
add(button);
setBounds(60,60,300,300);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
)
publicvoidactionPerformed(ActionEvente){
ColornewColor=JColorChooser.showDialog(thisJ調(diào)色板
'\button.getBackgroundO);
if(newColor!=null){
button.setBackground(newColor);
)
}
)
習(xí)題12
1.使用Fileinputstream流。
2.Fileinputstream按字節(jié)讀取文件,F(xiàn)ileReader按字符讀取文件。
3.不能。
4,使用對象流寫入或讀入對象時(shí),要保證對象是序列化的。
5.使用對象流很容易得獲取一個(gè)序列化對象的克隆,只需將該對象寫入到對象
輸出流,那么用對象輸入流讀回的對象一定是原對象的一個(gè)克隆。
6.
importjava.io.*;
publicclassXiti6
{publicstaticvoidmain(Stringargs[])
{Filef=newFile("E.java");;
try{RandomAccessFilerandom=newRandomAccessFile(fz"rw");
random.seek(O);
longm=random.length();
while(m>=0)
{m=m-l;
random.seek(m);
intc=random.readByte();
if(c<=255&&c>=0)
{System.out.print((char)c);
}
else
{m=m-l;
random.seek(m);
bytecc[]=newbyte[2];
random.readFully(cc);
System.out.print(newString(cc));
)
)
)
catch(Exceptionexp){}
}
)
7.
importjava.io.*;
publicclassXiti7
{publicstaticvoidmain(Stringargs[])
{Filefile=newFile(uE.java");
FiletempFile=newFile("temp.txt,,);
try{FileReaderinOne=newFileReader(file);
BufferedReaderinTwo=newBufferedReader(inOne);
FileWritertofile=newFileWriter(tempFile);
BufferedWriterout=newBufferedWriter(tofile);
Strings=null;
inti=0;
s=inTwo.readLine();
while(s!=null)
i++;
out.write(i+""+s);
out.newLine();
s=inTwo.readLine();
}
inOne.close();
inTwo.close();
out.flush();
out.close();
tofile.close();
}
catch(IOExceptione)
{System.out.println(e);
}
)
)
8.屬于操作題目,解答略。
9.
importjava.util.*;
importjava.io.*;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassXiti9
{publicstaticvoidmain(Stringargs[])
{EWindoww=newEWindow();
w.validate();
)
}
classEWindowextendsFrameimplementsActionListenerJtemListener
{Stringstr[]=newString[7],s;
FileReaderfile;
BufferedReaderin;
Buttonstart,next;
Checkboxcheckbox[];
TextField題目,分?jǐn)?shù);
intscore=0;
CheckboxGroupage=newCheckboxGroupO;
EWindow()
{super("英語單詞學(xué)習(xí)");
分?jǐn)?shù)=newTextField(lO);題目=newTextField(70);
start=newButton(“重新練習(xí)”);
start.addActionListener(this);
next=newButton("下一題目");
next.addActionListener(this);
checkbox=newCheckbox[4];
for(inti=0;i<=3;i++)
,H,
{checkbox[i]=newCheckbox(zfalse,age);
checkbox[i].addltemListener(this);
}
try{file=newFileReader("English.txt");
in=newBufferedReader(file);
catch(IOExceptione){}
setBounds(20,100,660,300);setVisible(true);
Boxbox=Box.createVerticalBox();
Panelpl=newPanel(),p2=newPanel(),
p3=newPanel(),p4=newPanel(),p5=newPanel();
pl.add(newLabel("題目:"));pl.add(題目);
p2.add(newLabel("選擇答案:"));
for(inti=0;i<=3;i++)
{p2.add(checkbox[i]);
)
p3.add(newLabel(“您的得分:"));p3.add(分?jǐn)?shù));
p4.add(start);p4.add(next);
box.add(pl);box.add(p2);box.add(p3);box.add(p4);
addWindowListener(newWindowAdapter()
{publicvoidwindowClosing(WindowEvente)
{System.exit(O);
add(box,BorderLayout.CENTER);
reading();
publicvoidreading()
{inti=0;
try{s=in.readLine();
if(!(s.startsWith("endend")))
{StringTokenizertokenizer=newStringTokenizer(sJ'#");
while(tokenizer.hasMoreTokens())
{str[i]=tokenizer.nextToken();
i++;
)
題目.setText(str[O]);
for(intj=l;j<=4;j++)
{checkbox[j-l].setLabel(str[j]);
}
}
elseif(s.startsWith("endend"))
(題目.setText("學(xué)習(xí)完畢”);
for(intj=0;j<4;j++)
{checkbox[j].setLabel(”end");
in.close();file.close();
}
)
)
catch(Exceptionexp){題目.setText("無試題文件");}
}
publicvoidactionPerformed(ActionEventevent)
{if(event.getSource()==start)
{score=0;
分?jǐn)?shù).setText("得分:"+score);
try{file=newFileReader(nEnglish.txt");
in=newBufferedReader(file);
}
catch(IOExceptione){}
reading();
}
if(event.getSource()==next)
{reading();
for(intj=0;j<4;j++)
{checkbox[j].setEnabled(true);
}
)
)
publicvoiditemStateChanged(ltemEvente)
{forfintj=0;j<4;j++)
{if(checkbox[j].getLabel().equals(str[5])&&checkbox[j].getState())
{score++;
分?jǐn)?shù).setText("得分:"+score);
}
checkbox[j].setEnabled(false);
)
)
)
習(xí)題13
1.一個(gè)使用鏈?zhǔn)浇Y(jié)構(gòu),一個(gè)使用順序結(jié)構(gòu)。
2.8o
3.ABCDo
4.選用HashMap<K,V>來存儲(chǔ)。
5.
importjava.util.*;
classUFIashKeyimplementsC
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版外專局外國教育專家勞動(dòng)合同3
- 二零二五年度工業(yè)品綠色制造與節(jié)能降耗合同3篇
- 二零二五年度技術(shù)咨詢合同:某科技公司與某制造業(yè)企業(yè)關(guān)于技術(shù)改進(jìn)的咨詢協(xié)議3篇
- 二零二五年度石場生產(chǎn)線承包合同模板制作3篇
- 2024版食品委托加工合同標(biāo)準(zhǔn)范本
- 酒店設(shè)備采購合同三篇
- 二零二五年度房地產(chǎn)項(xiàng)目財(cái)務(wù)顧問及財(cái)務(wù)分析報(bào)告服務(wù)合同3篇
- 2024新能源汽車銷售代理與合作經(jīng)營合同
- 2024物業(yè)管理公司服務(wù)范圍拓展與合同變更
- 證券交易軟件許可協(xié)議合同三篇
- 經(jīng)橈動(dòng)脈全腦血管造影術(shù)圍手術(shù)期護(hù)理
- 北師大版本八年級(jí)上冊第一章單元測試卷(A卷)【含答案】
- 2025屆高考政治一輪復(fù)習(xí):統(tǒng)編版必修4《哲學(xué)與文化》必背知識(shí)點(diǎn)考點(diǎn)提綱
- 開展醫(yī)院安全應(yīng)急演練工作計(jì)劃三篇
- 宜賓市敘州區(qū)2021-2022學(xué)年七年級(jí)上學(xué)期期末數(shù)學(xué)試題
- 全國生態(tài)環(huán)境監(jiān)測專業(yè)技術(shù)人員大比武理論試題集 第八章 自動(dòng)監(jiān)測
- 鋼材壓延加工生產(chǎn)技術(shù)
- 農(nóng)村教師政協(xié)提案范文
- DL-T5706-2014火力發(fā)電工程施工組織設(shè)計(jì)導(dǎo)則
- 重慶市2023-2024學(xué)年七年級(jí)上學(xué)期期末考試語文試題(解析版)
- 傳承傳統(tǒng)文化教育教案(3篇模板)
評論
0/150
提交評論