java面向?qū)ο蟪绦蛟O(shè)計課后答案_第1頁
java面向?qū)ο蟪绦蛟O(shè)計課后答案_第2頁
java面向?qū)ο蟪绦蛟O(shè)計課后答案_第3頁
java面向?qū)ο蟪绦蛟O(shè)計課后答案_第4頁
java面向?qū)ο蟪绦蛟O(shè)計課后答案_第5頁
已閱讀5頁,還剩73頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

清華大學(xué)出版社

(編著耿祥義張躍平)

習(xí)題解答

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

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

習(xí)題1

1.JamesGosling

、、、、

2.

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

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

(3)使用Java解釋器(java.exe)運行Java程序

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

應(yīng)用程序中可以沒有public類,若有的話至多可以有一個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)生成兩個字節(jié)碼文件,這些字節(jié)碼文件的名字Speak.class和Xiti8.class

(3)javaXiti8

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

Exceptioninthread"main"java.lang.NoSuchMethodError:main

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

Exceptioninthread"main"java.lang.NoClassDefFoundError:xiti8(wrongname:

Xiti8)

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

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

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

I'mgladtomeetyou

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

習(xí)題2

1.D

2.【代碼1】【代碼2】錯誤〃【代碼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ù)合語句缺少大括號代碼不夠清晰。

2.你好好酷!!

3.

publicclassXiti3__3

(

publicstaticvoidmain(Stringargs[]){

intstartPosition=0,endPosition=0;

,,,

charcStart=a/cEnd='a;

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

startPosition

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

endPosition

System.out.printing俄文字母表:”);

for(inti=startPosition;i<=endPosition;i++){

charc='\0';

c=(char)i;〃i做char型轉(zhuǎ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)計算的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)計算的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("請輸入兩個非零正整數(shù),每輸入一個數(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("請輸入兩個非零正整數(shù),每輸入一個數(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)建對象時。

2.所謂方法重載是在一個類中可以有多個方法具有相同的名字,但這些方法的

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

以重載。

3.可以。不可以。

4.不可以。

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

變量和實例變量有什么區(qū)別呢?一個類通過使用new運算符可以創(chuàng)建多個不同

的對象,不同的對象的實例變量將被分配不同的內(nèi)存空間;如果類中的成員變量

有類變量,那么所有對象的這個類變量都分配給相同的一處內(nèi)存,改變其中一個

對象的這個類變量會影響其它對象的這個類變量。也就是說對象共享類變量。

6.C,D

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

8.sum=-100

9.27

10.**20

##100

習(xí)題5

1.如果子類和父類在同一個包中,那么子類自然地繼承了其父類中不是private

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

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

在同一個包中,那么子類繼承了父類的protected、public成員變量做為子類的成

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

方法的訪問權(quán)限保持不變。如果子類和父類不在同一個包里,子類不能繼承父類

的友好變量和友好方法。

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

員變量。

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

法的類型的子類型,并且這個方法的名字、參數(shù)個數(shù)、參數(shù)的類型和父類的方法

完全相同,子類如此定義的方法稱作子類重寫的方法。子類通過方法的重寫可以

隱藏繼承的方法。

2.不可以。

3.abstract類。

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

對象的引用放到A類的對象中時;稱這個A類對象是子類對象的上轉(zhuǎn)型對象。

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

那么該接口變量就可以調(diào)用被類實現(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是實現(xiàn)關(guān)系。

2.

3.

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

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

習(xí)題8

采用新增的策略為選手計算得分。

增加新的具體策略StrategyFour°StrategyFour類將doublecomputeScore(double[]

a)方法實現(xiàn)為去掉數(shù)組a的元素中的一個最大值和一個最小值,然后計算剩余元

素的兒何平均值。

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("字符串原來是這個樣子:"+tl);

sl=tl.tollpperCase();

System.out.printin("字符串中的小寫字母變成大寫是這個樣子:n+sl);

s2=tl.toLowerCase();

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

s3=sl.concat(s2);

System.out.printin(“大寫字符串連接小寫字符串是這個樣子:"+s3);

)

}

7.

classXiti7

{publicstaticvoidmain(Stringargs[])

{Strings="中華人民共和國“;

chara=s.charAt(O);

charb=s.charAt(6);

System,out.printin("第一個字符:"+a);

System,out.printin("最后一個字符:H+b);

}

)

8.

importjava.util.*;

classXiti8

{publicstaticvoidmain(Stringargs[]){

intyear,month;

System.out.println("請輸入年份和月份,每輸入一個數(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("請輸入第一個日期的年份月份日期,每輸入一個數(shù)回車

確認(rèn))

yearl=reader.nextlnt();

monthl=reader.nextlnt();

dayl=reader.nextlnt();

System.out.printin("請輸入第二個日期的年份月份日期,每輸入一個數(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("計算的窗口");

)

}

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(“計算)

}

}

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("移動)

f.validate();

f.addWindowListener(newWindowAdapter()

{publicvoidwindowClosing(WindowEvente)

{System.exit(O);

}

}

);

}

}

classMoveFrameextendsJFrameimplementsActionListener

{JButtoncontrolButton,movedButton;

publicMoveFrame()

{controlButton=newJButton("單擊我運動另一個按鈕");

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,使用對象流寫入或讀入對象時,要保證對象是序列化的。

5.使用對象流很容易得獲取一個序列化對象的克隆,只需將該對象寫入到對象

輸出流,那么用對象輸入流讀回的對象一定是原對象的一個克隆。

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.一個使用鏈?zhǔn)浇Y(jié)構(gòu),一個使用順序結(jié)構(gòu)。

2.8o

3.ABCDo

4.選用HashMap<K,V>來存儲。

5.

importjava.util.*;

classUFIashKeyimplementsC

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論