Java程序設(shè)計項目教程(第二版)答案_第1頁
Java程序設(shè)計項目教程(第二版)答案_第2頁
Java程序設(shè)計項目教程(第二版)答案_第3頁
Java程序設(shè)計項目教程(第二版)答案_第4頁
Java程序設(shè)計項目教程(第二版)答案_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

項目1

一、思考題

1.Java程序有幾種版本,分別是什么?

Java有三種版本,分別是J2ME、J2SE、J2EE

2.Java程序有何特點?

Java語言的特點如下:

①面向?qū)ο螅褐С执a繼承及重用,是完全面向?qū)ο蟮?,它不支持類似C語言那樣的面

向過程的程序設(shè)計技術(shù)。

②解釋執(zhí)行:Java解釋器(運行系統(tǒng))能直接運行目標(biāo)代碼有令。

③平臺無關(guān):Java源程序被編譯成一種高層次的與機器無關(guān)的Byte-codes格式語言,被設(shè)

計在Java虛擬機上運行。

?多線程:Java提供的多線程功能使得在一個程序里可同時執(zhí)行多個小任務(wù)。多線程帶來

的好處是可以有更好的交互性能和實時控制性能。

⑤健壯性:Java致力于檢查程序在編譯和運行時的錯誤,類型檢查幫助檢查出許多開發(fā)早

期出現(xiàn)的錯誤。

3.什么是JVM,為什么需要JVM?

JVM即Java虛擬機,是一臺可以存在于不同的真實的軟、假件環(huán)境下的虛擬的計算機,其

功能是將字節(jié)碼解釋為真實平臺能執(zhí)行的指令。Java正是通過虛擬機JVV技術(shù),實現(xiàn)了與平臺

無關(guān),實現(xiàn)“編寫一次,到處運行”。因此,任何平臺只要安裝相應(yīng)的Java虛擬機環(huán)境,就能

運行Java程序。

4.如何理解Java程序的基本結(jié)構(gòu)?

①語句packagepl;是建立?一人包(文件夾),生成的類文件將存放于包中。

②程序第一行publicclass類名}是一個類定義語句。public關(guān)鍵字指明類的訪問方式為

公有,也就是在整個程序內(nèi)都可以訪問到它。如果將類定義為public,則類其名稱必須與主文件名

一致,并口大小寫敏感。

③類后大括號內(nèi)可以定義類的成員和方法,對于一個可■執(zhí)行的Java類,main方法是必

需的,而且該main方法必須是公有(public)、靜態(tài)(stalic)和沒有返回值(void)的,同時它只能帶一

個字符串型(StringU)的參數(shù)。

?程序的一行“〃……”是注釋,只說明不運行。

⑤每個命令語句結(jié)束,必須以結(jié)尾。

二、編程

1.編寫一Java應(yīng)用程序,要求在屏幕上輸出字符串“HappyNewYear!”。

classPracl

publiestaticvoidmain(Stringargs[])

(

System,printIn("H叩pyNewYear!");

)

)

2.編寫一個簡單的Java程序,在屏幕上輸出如下圖形:

*********

classBirdimplementsCanFlypublicvoidfly0(

System,out.priming鳥需借助翅膀飛上了天空。;)

classTest

(publicstaticvoidmain(Stringargs[])(Planep=newPlaneo;

Birdb=ncwBird();p.fly0;b.fly0;)

}項目4一、選擇題

I.關(guān)于異常的定義,下列描述中最正確的一個是(D)。

A)程序編譯錯誤B)程序語法錯誤

C)程序自定義的異常事件D)程序編譯或運行時發(fā)生的異常事件

2.拋出異常時,應(yīng)該使用的子句是(A)。

A)(hrowB)catchC)finallyD)throws

3.自定義異常類時,可以繼承的類是(C)。

A)ErrorB)AppletC)Excepiion及其子類D)AssertionError

4.當(dāng)方法產(chǎn)生異常但卻無法確定該如何處理時,應(yīng)采用的方法是(C)。

A)聲明異常B)捕獲異常C)拋出異常D)自定義異常

5.對于try(…)catch子句的排列方式,正確的一項是(A)。

A)子類異常在前,父類異常在后B)父類異常在前,子類異常在后

C)只能有子類異常D)父類異常與子類異常不能同時出現(xiàn)

6.下列關(guān)于try、catch和finally的表述,錯誤的是(C)。

A)(ry語句塊后必須緊跟catch語句塊B)catch語句塊必須緊跟在try語句塊后

C)可以有try但無catchD)可以有try但無finally

7.下列描述中,錯誤的一項是(A).

A)一個程序拋出異常,其他任何運行中的程序都可以捕獲

B)算術(shù)溢出需要進(jìn)行異常處理

C)在方法中檢測到錯誤但不知如何處理時,方法就聲明異常

I))任何沒有被程序捕獲的異常最終被默認(rèn)處理程序處理

8.下面程序運行時,會產(chǎn)生的異常是(C)o

classTcst(

publicstaticvoidmain(Stringarf])(intx=O,y二20,z;

z=(x+y)/(x*y);

System,out.printin("z="+z);

)B)NumberFormatException

D)NulIPointerException

A)

ArraylndexOutOfBoundsExceptionAnB)NumberFormatException

C)thMelicExceplion二、填空題

D)NulIPointerException

1.一個try代

碼段后必須跟calch代碼段,finally代碼段可以沒有。

2.自定義異常類必須繼承£2^國皿類或其子類。

3.異常處理機制可以允許根據(jù)具體的情況選擇在何處處理異常’,可以在當(dāng)前方法中捕獲并

處理,也可以用throws子句把它交給調(diào)用方法去處理。

4.數(shù)組卜標(biāo)越界對應(yīng)的類是ArrayIndexOutOfBoundsException。

5.為達(dá)到高效運行的要求,運行時產(chǎn)生一的異常,可以直接交給Java虛擬機系統(tǒng)來處理,

而Exception類派生出的非運行異常,要求編寫程序捕獲或者聲明,

三、編程題

1.從鍵盤輸入5個數(shù),求出5個數(shù)的階乘之和。若輸入負(fù)數(shù)時,產(chǎn)生異常并進(jìn)行相應(yīng)的處理。

importjavax.swing.*;classExceptionExam{

publicstaticvoidmain(Stringargs[])

inti,sum=0,j;for(i=0;i<5;i++)j=l;int

x=lnteger.parselnt(JOptionPane.showlnputDialog(null,"input:"));try(

if(x<0)thrownewException();fbr(intk=l;k<=x;k++)j=j*k;sum=sum4j;

}catch(Exccptionc){

System.out.printlnf輸入了一個負(fù)數(shù),請重新輸入!i-;))System.out.printlnf

階乘和為:"+sum);

2.設(shè)計自己的異常類,從鍵盤輸入-?個數(shù),若輸入的數(shù)不小于0,則輸出它的平方根。若小于

0,則輸出提示信息“輸入錯誤”。(求平方根的方法為:Math.sqrl(inlx))importjavax.swing.*;class

MyExceptionextendsException{

staticinti=3;

MyException()

(supero產(chǎn)生異常!”);

))classExceptionTest(

publicstaticvoidmain(Stringargsfl)

{intx=intcgcr.parsclnt(JOptionPanc.showlnputDialog(nuIl,''input:"));try(

if(x<0)thrownewMyException();System.oul.prinUn("輸入數(shù)的平方根

為:"+Math.sqrt(x));}catch(MyExccptione){

System.out.println(e.getMessage());(〃異常編號為:"+e.i);}

}}項目5—、選擇題

1.下面屬于容器類的是(A)

A.JFrameB.JTcxtFicldC.ColorD.JMenu

2.FlowLayout的布局策略是(A)

A.按添加的順序由左至右將組件排列在容器中。

B.按設(shè)定的行數(shù)和列數(shù)以網(wǎng)格的形式排列組件。

C.將窗口劃分成五部分,在這五個區(qū)域中添加組件。

D.組件相互疊加排列在容器中。

3.BorderLayout的布局策略是(C)

A.按添加的順序由左至右將組件排列在容器中o

B.按設(shè)定的行數(shù)和列數(shù)以網(wǎng)格的形式排列組件。

C.將窗口劃分成五部分,在這五個區(qū)域中添加組件。

D.組件相互疊加排列在容器中。

4.GridLayout的布局策略是(B)

A.按添加的順序由左至右將組件排列在容器中。

B.按設(shè)定的行數(shù)和列數(shù)以網(wǎng)格的形式排列組件。

C.將窗口劃分成五部分,在這五個區(qū)域中添加組件。

D.組件相互疊加排列在容器中。

5.JFrame中內(nèi)容窗格缺省的布局管理器是(B)

A.FlowLayoutB.BordcrLayoutC.GridLayoutD.CardLayout

6.監(jiān)聽事件和處理事件(B)

A.都由Listener完成B.都由相應(yīng)事件Listener處注冊的構(gòu)件完成

C.由Listener和構(gòu)件分別完成D.由Lislener和窗口分別完成

7.在下列事件處理機制中不是機制中的角色的是(A)

A.事件B.事件源C.事件接口D.事件處理者

A.當(dāng)有事件發(fā)生時,應(yīng)該使用this監(jiān)聽器

8.ciddActionListener(this)方法中的this參數(shù)表示的意思是(B)

&街曲事伸傀施用其他事他用this監(jiān)聽器B.(his對象類會處理此事件

90.下列關(guān)于Component的方法中,錯誤的是(A)

(tot南能優(yōu)nT其他事件D.只是一種形式

11.下列關(guān)于Component的方法中,錯誤的是(A)

A.getName()用于獲得組件的名字B.getSize()用于獲得組件的大小

C.setColor()用于設(shè)置前景顏色D.setVisible()設(shè)置組件是否可

10.當(dāng)窗口關(guān)閉時,會觸發(fā)的事件是(C)

D.Mous^氏翅胞啤陛題ItemEventC.WindowEvent

I.AWT的用戶界加組件庫被更穩(wěn)定、通用、靈活的庫取代,該庫稱為swing.

2.布局管理器用于安排容器上的GUI組件。

3.設(shè)置容器布局管理器的方法是selLayoulO0

4.當(dāng)釋放鼠標(biāo)按鍵時,將產(chǎn)生mouseRelease事件。

5.Java為那些聲明了多個方法的Listener接口提供了一個對應(yīng)的固諼,在該類中實現(xiàn)了

對應(yīng)接I1的所有方法。

6.ActionEvent事件的監(jiān)聽接II是ActionListener,注冊方法名是addActionListener(),事

件處理方法名是_DublicvoidactionDerfonned,。

7.圖形用戶界面通過』住響應(yīng)用戶和程序的交互,產(chǎn)生事件的組件稱為一坐住遮。

8.Java的Swing包中定義菜單的類是JMenu三、編程題

1.設(shè)計如圖所示樣式的圖形用戶界面(不要求實現(xiàn)功能)。

當(dāng)前時間:廠時冒廠分懺"秒I鬧鐘時間:時~分「1秒

鬧鐘設(shè)置王I蘭Iimportjavax.swing.*;cIassDemopubIicDemoO

JLabelbl=newJLabclC當(dāng)前時間:〃);

JLabclb2=newJLabelC時”);

JLabelb3=newJLabel("分”);

JLabelb4=newJLabel(“秒”);

JLabelb5二new比abelC鬧鐘時間:”);

JLabclb6=newjGhel(〃時〃):

JLabelb7=newJLabelC分“);b8=new

JLabelJLabelC秒“);b9=newJLabel("

JLabel鬧鐘設(shè)置”).jTcxtFicld("8",3);

JTextFicl?Tcxt^iclS^,57,,,3);JTextField(,,59,\

JTexlFi叫);j忌牌fd(3);JTextField(3);

JText!例1rex臃瞰);

JTextFieldt4=ne\v

J'lexthieldt5=ne\v

@同祖講出也也受g陶&圖6映后0KAm此且岫^^單?羽能觸理g創(chuàng)隼軸由爆玄邸闞蝴i仲#i說之頌'rame

}

publicstaticvoidinain(Stringarg[])(newDemo();

)

)

2.編寫一個將華氏溫度轉(zhuǎn)換為攝氏溫度的程序。其中一個文木框愉入華氏溫度,另一個文

本框顯示轉(zhuǎn)換后的攝氏溫度,一個按鈕完成溫度的轉(zhuǎn)換。使用下面的公式進(jìn)行溫度轉(zhuǎn)換:攝氏溫

度=5/9x(華氏溫度-32)。

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

classDemoimplementsAction!.istener

(JLabclbl,b2;

TJcxtFicId

publicDemo()

(bl=newJLabelC華氏溫度:;b2=newJLabelC攝氏溫度:");tl=newJ(6);

t2=newJTextField(6)JButtonbtl=ncwJButlon(/轉(zhuǎn)換”);JFramewin=new

JFrameO;win.setLayout(newFlowLayoutO);

win.add(bl);win.add(tl);win.add(b2);win.add(t2);

win.add(bll);btl.addActionListcncr(this);win.sctSize(160,120);win.setVisiblc(truc);

)

publicvoidactionPerformed(Ac(ionEven(e)

{t2.setText(""+5.0/9*(Float.parseFloat(t1.getText())-32));

)

publicstaticvoidmain(Slringarg[])

{newDemoO;

)

)

3,設(shè)計一個界面如圖。當(dāng)點擊“確認(rèn)”按鈕后,使“開始考試”按鈕可用,并使“學(xué)號”、

“姓名”后的文本框及“確認(rèn)”按鈕不可用。點擊“開始考試”按鈕后,使“下一題”按鈕可用,

同時設(shè)置“開始考試”按鈕不可用。

.c,s考汰系

importjava,awl.*;

importjava.awt.event.*;

importjavax.swing.*;

classTestPanelextendsJPanelimplementsActionListener

(JButtonstartButton;JLabeltimeLabel;JTextAreaquestionArea;

JRadioButtonradioButton口二newJRadioButton[5]:〃五個單選按鈕,目的是設(shè)置前四個答

案選項都不選中,而第五個選項選中,但第五個按鈕設(shè)置為不可見ButtonGroup

buttonGroup二newButtonGroupO;JButtonanswerBLitton;JButtonqucstionButton;

JButtonscorcButton;publicTestPaine1()

(sctl.ciyout(newBorderUiyout());JPanelnorthPcinel=newJPaneK);northPanel.

setLayout(newGridLayout(2,1));startButton=newJButton(〃開始考試“);startButtDn.

addActionListener(this):timeLabel=newJLabelC考試剩余時間”);northPanel.

add(startButton);northPanel.add(timcLabel);

add(northPanel,BorderLayout.NORTH);questionArea=newJTextArea(30,10);

questionArea.setLineWrap(true);questionArea.setWrapSty1eWord(true);questionArea.

setFont(newFontC幼圓〃,Font.PLAIN,16));intvScroll=ScrolIPaneConstants.

VERTICALSCROLLBARASNEEDED:inthScrolI=ScroIlPaneCons(ants.

HORlZOXrAL_SCROLLBAR_NEVER;add(new

JScrollPane(questionArea,vScroll,hScroll),BorderLayout.CENTER);JPanelsouthPancl=ncw

JPanel();JPanelradioPanel=newJPanel();〃放5個單選按鈕的面板Strings[]=

〃,〃〃};for(inti=0;i<radioButton.length;i++)(

radioBultonli]=ne\vJRadioButton(sli],false);buttonGroup.add(radioButton[i]);

radioPaneLaddiradioButton[i]);}

radioButton[radioButton.length-1].setVisible(false);單選按鈕不可見〃第五個

answerButton=newJButton(,,提交答案”):answerButton.setEnabled(false);

answcrButton.addActionListcncr(this);qucstionButton=ncwJButton('?卜一題”);qucstionButton.

setEnabled(false);questionButton.addActionListener(this);scoreButton二newJButton("成績〃);

scoreButton.setEnabled(false);scoreButlon.addActionListener(this);southPcinel.add(radioPanel);

southPanel.add(answerButton);southPane].add(questionButton);southPanel.add(scoieButton);add

(southPcinel,BorderLayout.SOUTH);}

publicvoidactionPerfdrmed(ActionEventc){if(e.getSource()==startButton)(

questionButton.setEnabled(true):

startBullon.setEnabled(false);

)}

classMyFrameextendsJFramcimplementsActionListencr

(

JBultonstartButton;

JLabelxh,xm;

JTcxtFieldxhl,xml;

JButtonok;TestPanellp=newTestPanelO:

MyFrame()

(

JPanclp=newJPanclO;xh=newJLabel(*學(xué)號:");xm=ncwJLabelC姓名:");xhl=new

JTcxtFicld(lO):xml=newJTextField(10):ok=newJButtonC確認(rèn)”):p.add(xh):p.add(xhl):

p.add(xm);p.add(xml);p.add(ok);add(p,BorderLayout.NORTH);add(tp);ok.

addActionListener(this);setSize(400,300);setVisible(true);

JpublicvoidactionPerformed(Ac(ionEven(e)(tp.startButton.setEnabled(true);

xhl.setEnabled(false);xml.setEnabledJ'alse);ok.setEnabled(false);

}publicstaticvoidmain(Stringar[])(newMyFrameO;}

)項目6—、選擇題

1.以下類中,具有繪圖能力的類是(B)。

A)ImageB)GraphicsC)FontD)Color

2.Graphics類中提供的繪圖方法分為兩類:一類是繪制圖形,另一類是繪制(B)。

A)屏幕B)文本C)顏色D)圖像

3.下列方法中不屬于Graphics類的顯示文本的方法是(D)。

A)drawBytesB)drawCharsC)drawStringD)drawLine

4.下面的程序?qū)崿F(xiàn)了在窗口中繪制一個以(70,70)為圓心,50為半徑,邊框是綠色的圓,圓

心是紅色的。應(yīng)填入的語句行是(B)。

classexamextendsFrame

(

publicvoi(1paint(Graphicsg)

(g.setColor(Color,green);g.drawOval(20,20,100,100);g.setColor(Color,red);

1

1

A)drawRect(70,70,I,l);B)g.drawRect(70,70,1,1);

C)g.drawLine(70,70,L1);D)g.drawOval(70,70,70,70);

5.在窗體的坐標(biāo)(50,50)處以紅色顯示“紅色文字”,填入的正確語句是(C)。

classexamextendsFrame

(publicvoidpaint(Graphicsg)

g.drawString(?紅色文字”,50,50);

)

A)g.se(Color(Color.Red);B)se(Color(Color,red);

C)g.setColor(Color,red);D)setcolor(Color,red);

6.下列方法中不能完成畫直線的方法是(D)。

A)drawPolylineB)drawRectC)drawLineD)drawChars二、填空題

1.paint。方法的參數(shù)是Graphics類的實例。

2.drawRect(intxl.intyl,intx2,inty2)中,x2和y2分別代表矩形的寬度、高度b

3.如果在(60,80)處畫一個點,通過drawOva1方法實現(xiàn),則該方法中的參數(shù)應(yīng)為(60.80.1.1)。

4.如果畫圓角矩形,drawRect方法中的參數(shù)應(yīng)為。個,其中后兩個參數(shù)的作用是o

5.如果設(shè)定輸出在某個組件上的文本的字體,用的方法是setFontO.該方法中的參數(shù)應(yīng)是_

Font類的對象。

6.以下程序輸出的是。

classexamextendsFrame

(publicvoidpaint(Graphicsg)

{g.setColor(Color,green);g.drawRect(20,20,1,30);)

)三、編程題

1.編寫程序,藍(lán)色輸出26個大寫字母,隨機彩色輸出26個小寫字母。

importjava.awt.*;publicclassExercise61extendsFrame(

publicExercise4_3_l()

(setSize(600,200);setVisibIe(true);

i

publicvoidpaint(Graphicsg)

(chars[]=newchar(26];inti;g.setColor(Co!or.blue);

for(i=0;i<26;i++)s[i]=(char)('A'+i);

classPrac2

publicstaticvoidmain(Stringargs[])

System,out.printing*");

System,out.printing****");

System,out.printing1*****");?02-、選擇題

1.數(shù)組中可以包含什么類型的元素?(D)

A.int型B.String型C.數(shù)組D.以上都可以

A.Arr.length()B.Arr.length

2.Java中定義數(shù)組名為An■,下面哪項可以得到數(shù)組元素的個數(shù)?(B)

A.Arr.lcngth()B.Arr.lengthC.Arr(xyz)D.Arr(xyz)

3.下面哪條語句定義了3個元素的數(shù)組?(A)

A.int[]a={20,30,40);

B.inta[]=newint(3);

C.int[3]array;

D.int[]arr;

4.下面的代碼段中,執(zhí)行之后i和j的值是(B)。

inti=10;

intj;

j=i++;

A.10,10B.II,IOC.10,HI).11,11-編程

1.試編與一個程序,輸入三條邊長值,并判斷這三條邊長能小能構(gòu)成三角形,如果能,能構(gòu)

成什么樣的三角形(一般、等邊、等腰)。

importjava.util.*;

classPracticcl{

publicstaticvoidmainfStringargs[])(Scanners=ncwScanncr(Systcm.in);int

a,b,c;a=s.nextlnt();b=s.nextlnt();

c=s.nextlnt();if(a+b>c&&a+c>b&&b+c>a)if(a==b&&a=c)System.out.print("構(gòu)成的三角

形為等邊三角形?!?;elseif(a==b||a==c||b==c)

Systcm.out.print("構(gòu)成的ZS角形為等腰三角形。");else

for(i=0;i<26;i4-+)g.drawChars(s,i,l,20+i*20,50);for(i=0;i<26;i++)s[i]=(char)(s[i]+32);

floatx,y,z;for(i=0;i<26;i++){x=(float)Math.random();y=(float)Math.random();

z=(noat)Math.random();Colorc=new

Color(x,y,z);g.setColor(c);g.drawChars(s,i,l,20+i*20,100);

}

)

publicstaticvoidmain(String[]args)

{newExcrcise4_3_l();

))

2.定義顯示字符數(shù)組的方法drawChars(),將字符串中第1、3、5體中,要…個字符顯示在窗

求顯示字體為:宋體、斜體、大小30點。

importjava.awt.*;publicclassExcrcise62extendsFramc(

Strings(r=,'abcdefgh";

charc[]=str.toCharAnay();

publicExcrcisc4_3_2()

(setSize(300,200);setVisible(true);

i

publicvoidpaint(Graphicsg)

{inti;Fontf;f=newFont(“宋體〃,F(xiàn)ont.ITALIC,30);

g.sctFont(f);for(i=0;i<c.Icngth;i=i+2)g.drawChars(c,i,l,10+i*20,60);

]

publicstaticvoidmain(Stringsargs)ncwExcrcise4_3_2();項目7

一、選擇題

1.下列數(shù)據(jù)流中,屬于輸入流的是(B)。

A)從內(nèi)存流向硬盤的數(shù)據(jù)流B)從鍵盤流向內(nèi)存的數(shù)據(jù)流

C)從鍵盤流向顯示器的數(shù)據(jù)流D)從網(wǎng)絡(luò)流向顯示器的數(shù)據(jù)流

2.Java語言中提供輸入輸出流的包是(I))。

A)java,sqIB)java,util

C)java,mathD)java,io

3.不是沁包中的接口的一項是(A)o

A)DatalnputR)DataOutput

C)DataInputStreamD)Objeclinput

4.下列流中那一個使用了緩沖區(qū)技術(shù)?(A)。

A)BufferedOutputStreamB)FilelnputStream

C)DataOutputS(reamD)FileReader

5.下列說法中,錯誤的是(B)。

A)FileReader類提供將字節(jié)轉(zhuǎn)換為Unicode字符的方法

B)InputStrcamReader提供將字節(jié)轉(zhuǎn)化為Unicode字符的方法

C)FileReader對象可以作為BufferedReader類的構(gòu)造方法的參數(shù)

I))[nputStreamReader對象可以作為BufferedReader類的構(gòu)造方法的參數(shù)

6.下列哪個方法返回的是文件的絕對路徑?(B)。

A)getCanonicalPath()B)getAbsokitePath()

C)getCanonicalFile()D)getAbsoluteFile

7.下列程序建立一個myFileldat文件,并且允許按照不同的數(shù)據(jù)類型向里面寫入數(shù)據(jù),選

擇正確的一項填入程序中的橫線處9)0

importjava.io.*;

publicclassTesti(

publicstaticvoidmain(Stringa[])(try(FileOu(putSlreamfos=new

FileO.itputStream(',myFilel.daf,);}

catch(Exccptione)(e.printStrace();)

}

}

A)OutpulStreamos二newOuiputStream(fos);

B)DataOutputStrcamdos=ncwDataOutputStrcam();

C)Da(aOu(putStreamdos=ncwDataOutputStream(fos):

D)FilcOutputStrcamfos=ncwFilcOutputStrcam(fos);

8.下列說法錯誤的是(D)。

A)Java的標(biāo)準(zhǔn)輸入對象為System,in

B)打開一個文件時不可能產(chǎn)生lOException

C)使用File對象可以判斷一個文件是否存在

D)使用File對象可以判斷一個目錄是否存在二、填空題

1.按照流的方向來分,I/O流包括輸入流和輸出流。

2.流是一個流動的數(shù)據(jù)緩沖區(qū),數(shù)據(jù)從數(shù)據(jù)是流向數(shù)據(jù)口數(shù)地°

3.FilelnputStream實現(xiàn)對磁盤文件的讀取操作,在讀雙字符的時候,它一般與和

InDutSlreamReaderBufferedReader一起使用。

4.向DaiaOulpulSlream對象dos的當(dāng)前位置寫入一個保存在變量d中的浮點數(shù)的方法是dos,

iteFloat(d)。

5.使用BufferedOutputStreani輸出時,數(shù)據(jù)首先寫入緩沖區(qū),直到寫滿才將數(shù)據(jù)寫入輸出

Mo

三、編程題

1.程序在運行過程中產(chǎn)生數(shù)組形式的數(shù)據(jù)如下:{2.23,4.67,6.54,2.22,

1.45,64},編程將數(shù)據(jù)存儲到文件中去,以備后面再讀入進(jìn)行處理。imporljava.io.*;

classPracticel(publicstaticvoidmain(Stringa||){try(

FilcOutputStrcamfos=newFileOutputStrcam(ze:\\l\\a.txt");

DataOutputStreaindos:newDataOutputStream(fos);

doublearr[]={2.23,4.67,6.54,2.22,1.45,5.64);

for(inti=0;i<arr.length;i++)

dos.writeDouble(arr[i]);

)

catch(Exceptionc)(

e.printStackTrace();

)

)

}

2.利用輸入輸出流編程實現(xiàn)籽文件a2.ixl中的文本內(nèi)容以可打的形式復(fù)制到文件a3.(xl

中去。

importjava.io.*;

importjava.io.*;

classPractice2

{publicstaticvoidmain(Stringargsl|)throvvsiOException(try(

FileReaderfr=newFileReader("a2.txt");Fi1eWriterfw=newFi1eWriter(-2a3.txtw);int

n;

while((n=fr.read())!=-l)(fw.write(n);)fr.close();

fw.close0;}caich(Excepiionc)(}}

)項目8—、選擇題

1.JDBC是面向(B)的。

A.過程B.對象

C.用戶D.應(yīng)用

2.JDBCAPI主要都定義在下列哪個包中?(A)

A.java,sqlB.java,io

C.java,awtD.java,util

3.若要查詢數(shù)據(jù)庫的信息可以使用以下哪個方法?(D)

A.Connection類的getMetaDalaO方法B.DriverManager類的gctConncction()方法

C.Connexion類的createStaiemenl方法D.SlaiemenL類的ExecuteQuery()方法

4.Stalement類的execuleQuery()方法返I用的數(shù)據(jù)類型是(D)。

A.Statement類的對象B.Connection類的對象

C.DcitcibaseMetaDat類的對象D.ResuItSet類的對象

5.下列哪項不是gelConneclion()方法的參數(shù)?(C)

A.數(shù)據(jù)庫用戶名B.數(shù)據(jù)庫的訪問密碼

C.JDBC驅(qū)動器的版本D.連接數(shù)據(jù)庫的URL二、填空題

1.Java使用JDBC作為數(shù)據(jù)庫的訪問機制。

2.支持JDBC的數(shù)據(jù)庫很好的實現(xiàn)了跨數(shù)據(jù)庫平臺的無去性。

3.JDBC驅(qū)動程序負(fù)責(zé)將應(yīng)用程序中基于類和接口的Java方法轉(zhuǎn)換為多種關(guān)系數(shù)據(jù)庫能

夠理解的命令。

4.查詢數(shù)據(jù)庫的標(biāo)準(zhǔn)步驟是:加載驅(qū)動程序類,定義連接的URL.生成連接對象,建立

Statement對象,執(zhí)行查詢,處理結(jié)果,關(guān)閉連接。

5.指向數(shù)據(jù)庫的URL中一般包含:班溟和數(shù)據(jù)源o

7.JDBCDriverManager是連接數(shù)據(jù)庫中的一個負(fù)責(zé)管理JDBC驅(qū)動程序的個塊。

三、編程題

I.查詢Sludeni數(shù)據(jù)庫中的學(xué)生信息表Slulnfo,按年齡從低到高順序愉出各行數(shù)據(jù).

importjava,sql.*;

classQueryDemo(publicstaticvoidmain(String[]args)throwsException(Connectioncon二

null;

Class.forName("com.mysql.jdbe.Driver");〃加載MySQL驅(qū)動類String

connectionURL--jdbc:mysql://l27.0.0.l:3306/Student";con=DriverManager.

getConnection(connectionURL,"root",“123”);Statementstat=con.createStatement

();〃建立執(zhí)行sql語句的容器Stringquery=〃select*fromStulnfoorderby年

齡〃;

Resul(Setrs=sta(.executeQuery(query);〃執(zhí)行查詢數(shù)據(jù)庫的語句System,oul.

printin("Stulnfo用戶表中的內(nèi)容”);

System,out.printin(,,學(xué)號\t\t姓名\t性別\t年齡\t身高\t家庭住址〃);while(rs.

next())(

intxh=rs.getlnt產(chǎn)學(xué)號”);

Stringxm=rs.getString-姓名");

Stringxb=rs.getSlring("性別〃);

intnl=rs.getlnt(“年齡");floatsg=rs.getFloat(*身高”);

Stringzhuzhi=rs.getString("家庭住址”);

System,out.printin(xh+”\t”+xm+”\T'+xb+”\t”+nl+”\t"+sg+“\t”

+zhuzhi);)

2.對Student數(shù)據(jù)庫中的學(xué)生信息表Stulnfo插入數(shù)據(jù)行,插入如下記錄:(學(xué)號:20060307,

姓名:吳祥雷,性別:男,年齡:16,身高:1.73,家庭住址:王集鎮(zhèn)大王村,電話:再以表格形

式輸出表中數(shù)據(jù)。

importjava.sql.*;importjava.awt.*:importjavax.swing.*;importjava.util.*;

classPractice?extendsJFrame)

publicstaticfinalStringDBDRIVER="com.mysql.jdbc.Driver";

publicstaticfinalStringDBURL=,jdhc:mysql://:3306/Studcnt";

publicstaticfinalStringDBUSER="root";

publicstaticfinalStringDBPASS="123";

privateResultSetresultSet;

privateResultSetMetaDatarsmd:

privateJButtonsubmilQuery;

privateJTabletable;

VectorcolumnHeads;

VectorcuirentRowzVectorrows;

publicstaticvoidmain(Stringargs。)throwsException!〃所有的異常拋;Connectionconn=

null;//數(shù)據(jù)庫連接Statementstmt=null;//數(shù)據(jù)庫操作Class.forName(DBDRIVER);

conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);stmt=

conn.createStatemenlO;//實例化Statement對象intid=20060307;Stringname=〃吳祥

云田”?,

Stringsex="男";intage=167;floatheight=1.7368f;Stringadress="王集鎮(zhèn)大王村”;

Stringsql="inscrtintoStulnfovalucs(',+id+"z',+name+,,7"

+sex+T'+age+”,''+height+”,”』adress+〈'”+phone+”')“;

stmt.executeUpdate(sql);stmt.close();conn.close();

Practicc2p=ncwPracticc2();p.showData();

)

publicvoidshowData()

(

try(Class.forName("com.mysql.jdbc.Driver");"加載MYSQLJDBC驅(qū)動程序Stringconstr=

"jdbc:mysql://localhost:3306/Student";Connec(ionconnection=

DriverManager.getConnectionfconstr/'root"/'123");columnHeacs=newVector();rows=new

Vector();Stringquery="SELECT*FROMstuinfo";

Statementstatement=connection.createStatement();resultSet=

statemcnt.executeQucryCquery);rsmd=resultSct.getMctaDataf);for(inti=1;i<=

rsmd.gctColumnCountO;iii)columnlleads.addElcmcnt(rsmd.gctColumnNamc(i));

while(resuItSet.nextO)(

currentRow=newVector();for(inti=1;i<=rsnid.getColumnCount();++i)

currentRow.addElement(resultSet.getString(i));rows.addElement(currentRow);)

)catch(Exceptionsqlex){sqlex.printStackTrace();)

tabic=newJTablc(rows,columnHeads);

JScrollPanescroller=newJScrollPaneftable);

add(scroller);

setSize(500z200);

setVisible(true);

}}項目9

一、選擇題

1.一個java程序運行后,在系統(tǒng)中作為一個(B)。

A)線程B)進(jìn)程

C)進(jìn)程或線程D)不可預(yù)知

2.設(shè)已編好了一個線程類MyThroad,要在main()中啟動該線程,需使用的方法是(B)。

A)newMyThread

B)MyThreadmyThread=newMyThread();myThread.start。;

C)MyThreadmyThread=newMyThrcad();myThread.run():

D)newMyThread.start();

3.處于激活狀態(tài)的線程可■能不是當(dāng)前正在執(zhí)行的線程,原因是(B)。

A)為當(dāng)前唯一運行的線程B)線程被掛起

。線程被繼續(xù)執(zhí)行D)通知線程某些條件二、填空題

1.線程的創(chuàng)建方式是繼承T是cad類和。

2.線程生命周期的五種狀態(tài)為:創(chuàng)建、可運行運行中、瓜塞、和死亡o

3.一個線程對象的具體操作是由runO方法的內(nèi)容確定的,但是Thread類的該方法是空的,

其中沒有內(nèi)容,所以用戶程序要么派生一個Thread的子類并在子類里重新定義此方法,要么使-

個類實現(xiàn)Runnable接口并書寫該方法的方法體。

4.當(dāng)一個線程睡眠時,sleep。方法不消耗CEU時間。

三、編程題

1.設(shè)計4個線程對象,兩個線程執(zhí)行減操作,兩個線程執(zhí)行和操作。

publicclassThreadiest1{

privateintj;

publicstaticvoidmain(Stringargs[]){

ThreadTestItt=newThreadTestl();

Incinc=u.iicwInc();

Decdcc=t(.newDec();

foriinti=0;iv2;i++){

Threadt=newThread(inc);

LstartO;

t=ncwThrcad(dcc);

t.start();

);

privatesynchronizedvoidinc(){

j++;

Systcni.out.piintln(Thrcad.currcntThicad().gctNanic()+"-inc:"+j);

privatesynchronizedvoiddcc(){

j-;

System.out.println(Thrcad.currcntThrcad().gctNameO+''-dcc:"+j);

)

classIncimplementsRunnable{

publicvoidrun()(

for(in(i=0;i<IOO;i++)(

inc();classDecimplementsRunnable(publicvoidrun(){foninti=0;i<100;i++)(dec();

1

)

2.設(shè)計一個生產(chǎn)電腦和搬運電腦類,要求生產(chǎn)一臺電腦就搬走一臺電腦,如果沒有新的電腦

生產(chǎn)出來,則搬運工要等待新電腦產(chǎn)出;如果生產(chǎn)出的電腦沒有搬走,則要等待電腦搬走之后再

生產(chǎn),并統(tǒng)計出生產(chǎn)的電腦的數(shù)量,

classInfo{〃定義信息類privateStringname="生產(chǎn)者”;//定義name屬性privateStringcontent

="制造機器”;〃定義content屬性privatebooleanflag=false;//設(shè)置標(biāo)志位

publicsynchronizedvoidsct(Stringname,String

content){if(!flag)(try{super.wait();)catch(InterruptedExceptionc){

e.priniStackTrace();)}this.setNanie(name);//設(shè)置名稱

try{Thread.sleep(300);}catch(In(crruptcdExccptionc){e.printS(ackTrace();}

this.setConteni(contenl);"設(shè)置內(nèi)容flag=false;〃改變標(biāo)志位,表示可以取走

supcr.notifyO;publicsynchronizedvoidget(){iftflag){

lry{super.wait();)catch(IntcrruptedExceptionc){c.printStackTracc();}

}try{Thread.sIeep(300);}catch(In(erruptedExceplione){

e.printStackTrace();

}Systeni.out.println(this.getName()+"—>"+this.getContcntO);

flag=irue;〃改變標(biāo)志位,表示可以生產(chǎn)supcr.notifyO;}publicvoid

setName(Stringname)(=name;)

publicvoidsctContcnt(Stringcontent){this.content=content;(publicString

getName(){return;}

publicStringgetContent()(returnthis.content;}1classProducerimplements

Runnable{//通過Runnable實現(xiàn)多線程privateInfoinfo=null;//保存Info

引用

publicProducedInfoinfo)(=info;}publicvoidrun(){booleanflag=false;//

定義標(biāo)記位

for(inti=0;iv50;i++){if(flag)(.setC生產(chǎn)者",“制造機器");//設(shè)置名稱

flag=false;)else{

消費者“,“取走機器”);〃設(shè)置名稱flag=true;classConsumer

implementsRunnable{privateInfoinfb=null;publicConsumedInfb

infd)(=info;)

publicvoidrun(){for(inti=0;i<50;i++){.gei(

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論