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

下載本文檔

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

文檔簡介

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

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

要實現(xiàn)本項目功能,我們可以分為以下三個任務來完成:

本項目可分解為以下三個任務:1.調(diào)試階乘程序代碼。2.求水仙花數(shù)問題。3.分解質(zhì)因數(shù)問題?!救蝿彰枋觥?/p>

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

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

(F5)單步執(zhí)行程序,遇到方法時進入;(F6)單步執(zhí)行程序,遇到方法時跳過;(F7)單步執(zhí)行程序,從當前方法跳出;(F8)直接執(zhí)行程序。遇到斷點時暫停。

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

2.斷點的分類(1)條件斷點(2)方法斷點(3)異常斷點2.API的結構及使用

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

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

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

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

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

【任務描述】

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

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

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

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

任務14-2:服務器端: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)建端口號為8111的ServerSocket對象

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

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

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

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

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

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

圖14.5任務14-2客戶端運行結果【課堂提問】

★在API幫助文檔中,某個類通常會有多個構造方法,構造方法支持重載嗎?

【現(xiàn)場演練】

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

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

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

溫馨提示

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

評論

0/150

提交評論