Java程序设计教程(第三版)课件 项目十五 MyEclipse调试方法入门_第1页
Java程序设计教程(第三版)课件 项目十五 MyEclipse调试方法入门_第2页
Java程序设计教程(第三版)课件 项目十五 MyEclipse调试方法入门_第3页
Java程序设计教程(第三版)课件 项目十五 MyEclipse调试方法入门_第4页
Java程序设计教程(第三版)课件 项目十五 MyEclipse调试方法入门_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目十五MyEclipse调试方法入门【项目描述】

在完成代码开发后,接下来的工作就是测试。在前面的学习中,我们常常会用System.out来输出中间结果,以验证我们程序是否有逻辑错误。对于只有几十行的小程序,采用这种方法也是可行的,但是对于几百行上千行的代码,我们仍用System.out来检验代码的话,这种效率是非常低的,代价也是非常大的。因此,本项目主要介绍MyEclipse的调试入门和基本技巧。【任务分解】

要实现本项目功能,我们可以分为以下三个任务来完成:

本项目可分解为以下三个任务:1.调试阶乘程序代码。2.求水仙花数问题。3.分解质因数问题。【任务描述】

任务15-1:给出求阶乘(n!=n*(n-1)*(n-2)*...*1)的程序代码,发现运行结果不正确时,使用调试方法跟踪中间执行结果。任务一调试阶乘程序代码[必备知识】

1.断点的概念断点就是你希望程序运行到哪暂停,断点往往就是你觉得程序可能出错的地方。MyEclipse中设置断点很简单,在java编辑视图下,直接在想要设置断点的那行的最左边双击即可,出现一个黄色小点,说明添加断点成功。以debug方式运行Java程序后,可执行以下操作:

(F5)单步执行程序,遇到方法时进入;(F6)单步执行程序,遇到方法时跳过;(F7)单步执行程序,从当前方法跳出;(F8)直接执行程序。遇到断点时暂停。

在进行debug调试时,会有很多有用信息显示在debug框里,如堆栈信息等;在程序界面里,鼠标移到变量上时会有当前变量的属性值。

2.断点的分类(1)条件断点(2)方法断点(3)异常断点2.API的结构及使用

打开API,可看到两个框架窗体,左窗体有4个选项卡:“目录”、“索引”、“搜索”和“收藏夹”。图14.2API帮助文档主界面

注意,API文档仅仅是查询类、接口、方法的功能参数等,并不是教我们怎样去使用Java做东西的。API的作用在于你对某些类有初步的了解之后,想更深入一步的情况下使用的。【解题思路】

步骤1:使用API帮助文档的索引功能找到“SimpleDateFormat”类,查看此类的使用说明。了解此类的说明后我们找它的构造方法,可以找到此类有四个构造方法。我们选择其中的一个:SimpleDateFormat(Stringpattern)。用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat,即:DateFormatformatter=newSimpleDateFormat("yyyy年MM月dd日");

步骤2:然后我们要格式化系统时间(当然我们需要先获取系统时间newDate()),找到我们需要的方法,在此类找不到,我们可以去它的父类找,在API文档我们可以看到如下关系:找到方法format(Datedate),当然你可以使用其他方法,下面我们以这个方法为例:步骤3:格式化系统时间。【任务透析】//任务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分");

//获取到当前系统时间 DatecurrentTime=newDate(); System.out.println("调整前时间显示为:"+currentTime); //将日期时间格式化成yyyy年MM月dd日 Stringstr_date=formatter.format(currentTime);//将日期时间格式化成yyyy年MM月dd日HH时mm分 Stringstr_date1=formatter1.format(currentTime); System.out.println("1.调整后时间显示为:"+str_date); System.out.println("2.调整后时间显示为:"+str_date1); }}运行结果如图14.2所示:【课堂提问】★如果我们想使用的类是抽象类或接口时,不能直接实例化对象,该怎么办?★如果在某个类中找不到我们想要的方法时,又该怎么办呢?【现场演练】按照任务14-1的解题思路,去查查API帮助文档,完成任务要求的调整系统时间显示格式。任务二网络编程类ServerSocket和Socket的使用

【任务描述】

任务14-2:基于TCP协议,采用客户端/服务器模式,完成简单问答功能。【必备知识】1.ServerSocket类的使用使用API文档找到包,在包下找到ServerSocket和Socket这两个类。(1)要使用ServerSocket类,首先确定它不是抽象类或接口。接着我们在它的我个构造方法中找一个合适的构造器(构造方法),用于实例化ServerSocket类对象。ServerSocket类构造方法摘要:

(2)在方法摘要中,列出了常用的方法。查看方法功能描述,找到我们所需的方法:Socketaccept(),用于侦听并接受到此套接字的连接。ServerSocket类方法摘要:2.Socket类的使用找要用的构造方法:Socket(Stringhost,intport):使用用户指定的端口创建一个流套接字。Sockets==newSocket("00",8111);//创建于服务器端口8111连接的Socket对象,00为本机IP地址。Socket类构造方法摘要:3.输入输出流的使用(1)数据输出流DataOutputStream。在API文档中,先找到DataOutputStream类,再找它的构造方法。构造方法如下:DataOutputStream(OutputStreamin):使用指定的底层OutputStream创建一个DataOutputStream。DataOutputStreamdout=newDataOutputStream(s.getOutputStream())//s为Socket对象(2)数据输入流DataInputStream。构造方法如下:DataInputStream(InputStreamin):使用指定的底层InputStream创建一个DataInputStream。DataInputStreamdin=newDataInputStream(s.getInputStream());【解题思路】 任务14-2:服务器端:步骤1.创建端口为8111的ServerSocket对象。步骤2.创建DataOutputStream输出流对象写入数据。步骤3.创建DataInputStream输入流对象读取数据。客户端:步骤1.创建于服务器端口8111连接的Socket对象。步骤2.创建DataInputStream输入流对象读取数据。步骤3.创建DataOutputStream输出流对象写入数据。【任务透析】

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

程序运行结果显示总工资为负数,这显然是不合法的数据。该如何避免这种错误的发生呢?因为在任务4-1中,Teacher类的属性没有封装,可以被其他类直接访问。正确的做法是将要保护的属性私有化,即用关键字private修饰,增加一些方法来访问这些属性。详见任务4-3。try{ //创建与服务器端口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{ //创建与服务器端口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{ //创建端口号为8111的ServerSocket对象

ss=newServerSocket(8111); System.out.println("提问:"); //当ss接收到客户端请求后创建Socket对象s s=ss.accept();

//创建DataOutputStream输出对象

dout=newDataOutputStream(s.getOutputStream()); //创建DataInputStream输入对象

din=newDataInputStream(s.getInputStream()); Stringquesion="现任美国总统是谁?"; //向输出流写入数据

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帮助文档中,某个类通常会有多个构造方法,构造方法支持重载吗?

【现场演练】

按照任务14-2的解题思路,去查查API帮助文档,完成基于TCP协议客户端/服务器程序的设计。任务三数据库编程类的使用【任务描述】

任务14-3:查询并显示数据库名为QQ表名为userinfo的所有记录。表userinfo中有两个的字段:(username,password),分别是账号和密码。【必备知识】1.Java.sql包中的主要接口

打开API,在“索引”中输入java.sql,可以看到在此包中定义的接口、类和异常,但其中最重要的是:Connection(创建连接)、Statement(查询状态)和ResultSet(查询结果集)接口和类DriverManager。因为不管使用何种数据库,都需要提供驱动程序路径、连接地址、端口号、数据库用户名和密码等信息。2.两种常用的数据库访问技术用Java程序从数据库读取数据或将数据写入到数据库中,常用的访问方法有:ODBC和JDBC。(1)ODBC方式。ODBC是微软提供的开放式数据库连接,使用ODBC方式,需要配置一个数据源。(2)JDBC方式。JDBC由sun公司提供的纯Java驱动,使用JDBC方式需要导入驱动包(sqljdbc.jar),可直接访问数据源(DataSource)。一个数据库可映射为多个DataSource,Java代码拿到DataSource就可以访问数据库。3.数据库相关类的使用(1)数据的连接。在加载驱动程序后,我们要建立与数据库之间的连接。首先我们查找java.sql包中的DriverManager类,该类专门提供管理一组JDBC驱动程序的基本服务。API文档中对DriverManager类的说明如下所示:连接对象。getConnection()方法的作用是建立到url指定数据库的连接,我们使用带3个参数的getConnection(Stringurl,Stringuser,Stringpassword)方法,因为方法被声明为静态方法(static),因此,可用类DriverManager直接调用,方法返回类型是Connection。Connectionconn=DriverManager.getConnection(url,user,password);//创建连接对象。DriverManager类方法摘要:(2)向数据库发送SQL命令。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论