Java程序設(shè)計(jì)教程(第三版)課件 項(xiàng)目十五 MyEclipse調(diào)試方法入門_第1頁(yè)
Java程序設(shè)計(jì)教程(第三版)課件 項(xiàng)目十五 MyEclipse調(diào)試方法入門_第2頁(yè)
Java程序設(shè)計(jì)教程(第三版)課件 項(xiàng)目十五 MyEclipse調(diào)試方法入門_第3頁(yè)
Java程序設(shè)計(jì)教程(第三版)課件 項(xiàng)目十五 MyEclipse調(diào)試方法入門_第4頁(yè)
Java程序設(shè)計(jì)教程(第三版)課件 項(xiàng)目十五 MyEclipse調(diào)試方法入門_第5頁(yè)
已閱讀5頁(yè),還剩44頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

項(xiàng)目十五MyEclipse調(diào)試方法入門【項(xiàng)目描述】

在完成代碼開發(fā)后,接下來(lái)的工作就是測(cè)試。在前面的學(xué)習(xí)中,我們常常會(huì)用System.out來(lái)輸出中間結(jié)果,以驗(yàn)證我們程序是否有邏輯錯(cuò)誤。對(duì)于只有幾十行的小程序,采用這種方法也是可行的,但是對(duì)于幾百行上千行的代碼,我們?nèi)杂肧ystem.out來(lái)檢驗(yàn)代碼的話,這種效率是非常低的,代價(jià)也是非常大的。因此,本項(xiàng)目主要介紹MyEclipse的調(diào)試入門和基本技巧。【任務(wù)分解】

要實(shí)現(xiàn)本項(xiàng)目功能,我們可以分為以下三個(gè)任務(wù)來(lái)完成:

本項(xiàng)目可分解為以下三個(gè)任務(wù):1.調(diào)試階乘程序代碼。2.求水仙花數(shù)問(wèn)題。3.分解質(zhì)因數(shù)問(wèn)題?!救蝿?wù)描述】

任務(wù)15-1:給出求階乘(n!=n*(n-1)*(n-2)*...*1)的程序代碼,發(fā)現(xiàn)運(yùn)行結(jié)果不正確時(shí),使用調(diào)試方法跟蹤中間執(zhí)行結(jié)果。任務(wù)一調(diào)試階乘程序代碼[必備知識(shí)】

1.?dāng)帱c(diǎn)的概念斷點(diǎn)就是你希望程序運(yùn)行到哪暫停,斷點(diǎn)往往就是你覺(jué)得程序可能出錯(cuò)的地方。MyEclipse中設(shè)置斷點(diǎn)很簡(jiǎn)單,在java編輯視圖下,直接在想要設(shè)置斷點(diǎn)的那行的最左邊雙擊即可,出現(xiàn)一個(gè)黃色小點(diǎn),說(shuō)明添加斷點(diǎn)成功。以debug方式運(yùn)行Java程序后,可執(zhí)行以下操作:

(F5)單步執(zhí)行程序,遇到方法時(shí)進(jìn)入;(F6)單步執(zhí)行程序,遇到方法時(shí)跳過(guò);(F7)單步執(zhí)行程序,從當(dāng)前方法跳出;(F8)直接執(zhí)行程序。遇到斷點(diǎn)時(shí)暫停。

在進(jìn)行debug調(diào)試時(shí),會(huì)有很多有用信息顯示在debug框里,如堆棧信息等;在程序界面里,鼠標(biāo)移到變量上時(shí)會(huì)有當(dāng)前變量的屬性值。

2.?dāng)帱c(diǎn)的分類(1)條件斷點(diǎn)(2)方法斷點(diǎn)(3)異常斷點(diǎn)2.API的結(jié)構(gòu)及使用

打開API,可看到兩個(gè)框架窗體,左窗體有4個(gè)選項(xiàng)卡:“目錄”、“索引”、“搜索”和“收藏夾”。圖14.2API幫助文檔主界面

注意,API文檔僅僅是查詢類、接口、方法的功能參數(shù)等,并不是教我們?cè)鯓尤ナ褂肑ava做東西的。API的作用在于你對(duì)某些類有初步的了解之后,想更深入一步的情況下使用的?!窘忸}思路】

步驟1:使用API幫助文檔的索引功能找到“SimpleDateFormat”類,查看此類的使用說(shuō)明。了解此類的說(shuō)明后我們找它的構(gòu)造方法,可以找到此類有四個(gè)構(gòu)造方法。我們選擇其中的一個(gè):SimpleDateFormat(Stringpattern)。用給定的模式和默認(rèn)語(yǔ)言環(huán)境的日期格式符號(hào)構(gòu)造SimpleDateFormat,即:DateFormatformatter=newSimpleDateFormat("yyyy年MM月dd日");

步驟2:然后我們要格式化系統(tǒng)時(shí)間(當(dāng)然我們需要先獲取系統(tǒng)時(shí)間newDate()),找到我們需要的方法,在此類找不到,我們可以去它的父類找,在API文檔我們可以看到如下關(guān)系:找到方法format(Datedate),當(dāng)然你可以使用其他方法,下面我們以這個(gè)方法為例:步驟3:格式化系統(tǒng)時(shí)間。【任務(wù)透析】//任務(wù)14-1源代碼:ChangeTime.javaimportjava.text.DateFormat;importjava.text.SimpleDateFormat;importjava.util.Date;publicclassChangeTime{ publicstaticvoidmain(Stringargs[]){ //用yyyy年MM月dd日構(gòu)造日期格式 DateFormatformatter=newSimpleDateFormat("yyyy年MM月dd日"); //也可以加上時(shí)間 DateFormatformatter1=newSimpleDateFormat("yyyy年MM月dd日HH時(shí)mm分");

//獲取到當(dāng)前系統(tǒng)時(shí)間 DatecurrentTime=newDate(); System.out.println("調(diào)整前時(shí)間顯示為:"+currentTime); //將日期時(shí)間格式化成yyyy年MM月dd日 Stringstr_date=formatter.format(currentTime);//將日期時(shí)間格式化成yyyy年MM月dd日HH時(shí)mm分 Stringstr_date1=formatter1.format(currentTime); System.out.println("1.調(diào)整后時(shí)間顯示為:"+str_date); System.out.println("2.調(diào)整后時(shí)間顯示為:"+str_date1); }}運(yùn)行結(jié)果如圖14.2所示:【課堂提問(wèn)】★如果我們想使用的類是抽象類或接口時(shí),不能直接實(shí)例化對(duì)象,該怎么辦?★如果在某個(gè)類中找不到我們想要的方法時(shí),又該怎么辦呢?【現(xiàn)場(chǎng)演練】按照任務(wù)14-1的解題思路,去查查API幫助文檔,完成任務(wù)要求的調(diào)整系統(tǒng)時(shí)間顯示格式。任務(wù)二網(wǎng)絡(luò)編程類ServerSocket和Socket的使用

【任務(wù)描述】

任務(wù)14-2:基于TCP協(xié)議,采用客戶端/服務(wù)器模式,完成簡(jiǎn)單問(wèn)答功能?!颈貍渲R(shí)】1.ServerSocket類的使用使用API文檔找到包,在包下找到ServerSocket和Socket這兩個(gè)類。(1)要使用ServerSocket類,首先確定它不是抽象類或接口。接著我們?cè)谒奈覀€(gè)構(gòu)造方法中找一個(gè)合適的構(gòu)造器(構(gòu)造方法),用于實(shí)例化ServerSocket類對(duì)象。ServerSocket類構(gòu)造方法摘要:

(2)在方法摘要中,列出了常用的方法。查看方法功能描述,找到我們所需的方法:Socketaccept(),用于偵聽并接受到此套接字的連接。ServerSocket類方法摘要:2.Socket類的使用找要用的構(gòu)造方法:Socket(Stringhost,intport):使用用戶指定的端口創(chuàng)建一個(gè)流套接字。Sockets==newSocket("00",8111);//創(chuàng)建于服務(wù)器端口8111連接的Socket對(duì)象,00為本機(jī)IP地址。Socket類構(gòu)造方法摘要:3.輸入輸出流的使用(1)數(shù)據(jù)輸出流DataOutputStream。在API文檔中,先找到DataOutputStream類,再找它的構(gòu)造方法。構(gòu)造方法如下:DataOutputStream(OutputStreamin):使用指定的底層OutputStream創(chuàng)建一個(gè)DataOutputStream。DataOutputStreamdout=newDataOutputStream(s.getOutputStream())//s為Socket對(duì)象(2)數(shù)據(jù)輸入流DataInputStream。構(gòu)造方法如下:DataInputStream(InputStreamin):使用指定的底層InputStream創(chuàng)建一個(gè)DataInputStream。DataInputStreamdin=newDataInputStream(s.getInputStream());【解題思路】 任務(wù)14-2:服務(wù)器端:步驟1.創(chuàng)建端口為8111的ServerSocket對(duì)象。步驟2.創(chuàng)建DataOutputStream輸出流對(duì)象寫入數(shù)據(jù)。步驟3.創(chuàng)建DataInputStream輸入流對(duì)象讀取數(shù)據(jù)??蛻舳耍翰襟E1.創(chuàng)建于服務(wù)器端口8111連接的Socket對(duì)象。步驟2.創(chuàng)建DataInputStream輸入流對(duì)象讀取數(shù)據(jù)。步驟3.創(chuàng)建DataOutputStream輸出流對(duì)象寫入數(shù)據(jù)?!救蝿?wù)透析】

//任務(wù)14-2:客戶端:AnswerQuesion.javaimportjava.io.DataInputStream;importjava.io.DataOutputStream;import.Socket;importjava.util.Scanner;publicclassAnswerQuesion{ publicstaticvoidmain(String[]args){ Sockets=null; DataInputStreamdin=null; DataOutputStreamdout=null;

程序運(yùn)行結(jié)果顯示總工資為負(fù)數(shù),這顯然是不合法的數(shù)據(jù)。該如何避免這種錯(cuò)誤的發(fā)生呢?因?yàn)樵谌蝿?wù)4-1中,Teacher類的屬性沒(méi)有封裝,可以被其他類直接訪問(wèn)。正確的做法是將要保護(hù)的屬性私有化,即用關(guān)鍵字private修飾,增加一些方法來(lái)訪問(wèn)這些屬性。詳見任務(wù)4-3。try{ //創(chuàng)建與服務(wù)器端口8111連接的Socket對(duì)象,為本機(jī)IP地址 s=newSocket("",8111); din=newDataInputStream(s.getInputStream()); dout=newDataOutputStream(s.getOutputStream()); System.out.println("問(wèn)題是:"+din.readUTF()); Stringanswer=newScanner(System.in).nextLine(); dout.writeUTF(answer); }catch(Exceptione){ } }}try{ //創(chuàng)建與服務(wù)器端口8111連接的Socket對(duì)象,為本機(jī)IP地址 s=newSocket("",8111); din=newDataInputStream(s.getInputStream()); dout=newDataOutputStream(s.getOutputStream()); System.out.println("問(wèn)題是:"+din.readUTF()); Stringanswer=newScanner(System.in).nextLine(); dout.writeUTF(answer); }catch(Exceptione){ } }}//

任務(wù)14-2:服務(wù)器端:AskQuesion

.javaimportjava.io.DataInputStream;importjava.io.DataOutputStream;import.ServerSocket;import.Socket;

publicclassAskQuesion{ publicstaticvoidmain(String[]args){ ServerSocketss=null; Sockets=null; DataInputStreamdin=null; DataOutputStreamdout=null; try{ //創(chuàng)建端口號(hào)為8111的ServerSocket對(duì)象

ss=newServerSocket(8111); System.out.println("提問(wèn):"); //當(dāng)ss接收到客戶端請(qǐng)求后創(chuàng)建Socket對(duì)象s s=ss.accept();

//創(chuàng)建DataOutputStream輸出對(duì)象

dout=newDataOutputStream(s.getOutputStream()); //創(chuàng)建DataInputStream輸入對(duì)象

din=newDataInputStream(s.getInputStream()); Stringquesion="現(xiàn)任美國(guó)總統(tǒng)是誰(shuí)?"; //向輸出流寫入數(shù)據(jù)

dout.writeUTF(quesion); System.out.println(quesion); Thread.sleep(1); //顯示讀取文本

System.out.println("回答:"+din.readUTF()); ss.close(); }catch(Exceptione){ } }}圖14.4任務(wù)14-2服務(wù)器端運(yùn)行結(jié)果

圖14.5任務(wù)14-2客戶端運(yùn)行結(jié)果【課堂提問(wèn)】

★在API幫助文檔中,某個(gè)類通常會(huì)有多個(gè)構(gòu)造方法,構(gòu)造方法支持重載嗎?

【現(xiàn)場(chǎng)演練】

按照任務(wù)14-2的解題思路,去查查API幫助文檔,完成基于TCP協(xié)議客戶端/服務(wù)器程序的設(shè)計(jì)。任務(wù)三數(shù)據(jù)庫(kù)編程類的使用【任務(wù)描述】

任務(wù)14-3:查詢并顯示數(shù)據(jù)庫(kù)名為QQ表名為userinfo的所有記錄。表userinfo中有兩個(gè)的字段:(username,password),分別是賬號(hào)和密碼?!颈貍渲R(shí)】1.Java.sql包中的主要接口

打開API,在“索引”中輸入java.sql,可以看到在此包中定義的接口、類和異常,但其中最重要的是:Connection(創(chuàng)建連接)、Statement(查詢狀態(tài))和ResultSet(查詢結(jié)果集)接口和類DriverManager。因?yàn)椴还苁褂煤畏N數(shù)據(jù)庫(kù),都需要提供驅(qū)動(dòng)程序路徑、連接地址、端口號(hào)、數(shù)據(jù)庫(kù)用戶名和密碼等信息。2.兩種常用的數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)用Java程序從數(shù)據(jù)庫(kù)讀取數(shù)據(jù)或?qū)?shù)據(jù)寫入到數(shù)據(jù)庫(kù)中,常用的訪問(wèn)方法有:ODBC和JDBC。(1)ODBC方式。ODBC是微軟提供的開放式數(shù)據(jù)庫(kù)連接,使用ODBC方式,需要配置一個(gè)數(shù)據(jù)源。(2)JDBC方式。JDBC由sun公司提供的純Java驅(qū)動(dòng),使用JDBC方式需要導(dǎo)入驅(qū)動(dòng)包(sqljdbc.jar),可直接訪問(wèn)數(shù)據(jù)源(DataSource)。一個(gè)數(shù)據(jù)庫(kù)可映射為多個(gè)DataSource,Java代碼拿到DataSource就可以訪問(wèn)數(shù)據(jù)庫(kù)。3.?dāng)?shù)據(jù)庫(kù)相關(guān)類的使用(1)數(shù)據(jù)的連接。在加載驅(qū)動(dòng)程序后,我們要建立與數(shù)據(jù)庫(kù)之間的連接。首先我們查找java.sql包中的DriverManager類,該類專門提供管理一組JDBC驅(qū)動(dòng)程序的基本服務(wù)。API文檔中對(duì)DriverManager類的說(shuō)明如下所示:連接對(duì)象。getConnection()方法的作用是建立到url指定數(shù)據(jù)庫(kù)的連接,我們使用帶3個(gè)參數(shù)的getConnection(Stringurl,Stringuser,Stringpassword)方法,因?yàn)榉椒ū宦暶鳛殪o態(tài)方法(static),因此,可用類DriverManager直接調(diào)用,方法返回類型是Connection。Connectionconn=DriverManager.getConnection(url,user,password);//創(chuàng)建連接對(duì)象。DriverManager類方法摘要:(2)向數(shù)據(jù)庫(kù)發(fā)送SQL命令。

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論