java实验报告书3_第1页
java实验报告书3_第2页
java实验报告书3_第3页
java实验报告书3_第4页
java实验报告书3_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、浙江理工大学JavaJava程序设计实验报告20122013学年第二学期学院信息学院班级1111数字媒体技术(2 2)姓名周咪咪学号20113297002142011329700214宋瑾钰任课教师(上课时间:周二三四节)数字媒体技术专业20132013年5 5月Java程序设计实验报告实验名称:异常处理和文件读写实验地点:10号楼419所使用的工具软件及环境:Windows2000 或 XP,JDK1.6 与 Eclipse一、实验目的:1.掌握包、接口、异常处理的设计方法。2.掌握输入输出流类。二、实验内容:(一)了解异常处理机制,使用trycatch语句处理异常1 异常类型匹配的处理方式

2、 程序功能:首先说明”这是一个异常处理的例子,然后在程序中主动产生一个ArithmeticException 类型被0除的异常, 并用catch语句捕获这个异常。最后通过 ArithmeticException类的对象e的方法getMessage 给出异常的具体类型并显示出来。运行结果:Frqblems 和 Jtvtdocon 0 Conioleprograiri Java Application C: Froigram Files Java j r eT b i j avaw. ex a (2013-4_28 卜午 ID : 25: 22)履一K K則眺子异常是:/ by 忑Eiinally

3、 i吾奇被执行分析:(1) 程序从ma in ()函数入口,首先执行输出语句 System.out.pri ntl n(”这是一个异常处理的 例子n ”);在屏幕上输出“这是一个异常处理的例子”并换行。(2) 继而执行trycatch异常处理机制语句。首先定义局部变量i,并赋予初值使得i=10 ; 再执行i /=0;语句,因为除数不可以为 0,所以该语句抛出ArithmeticException 类错误(算 术错误),被catch语句捕获,跳出try语句。(3) 在catch语句中,对异常的语句进行处理。通过ArithmeticException 类对象e调用自带 函数getMessage()

4、,获取错误信息,输出结果。(4) 执行fin ally 语句,输出“ fin ally语句被执行”。(5) 结束程序。2 异常类型不匹配的程序编写一个catch语句中声明的异常类型不匹配的程序LX4_7.java运行结果:Fr aliens 负:JavadocDe cl ar at i on Q Consolen-fcttd-?- progrwj LJava Ajipli c&.11 onj C: XProgr in,iSLVSLV& &W W XCXC:42 :341Except ion in t hcead raain1* java- lang. Error : Unrssa Lved c

5、omp 11st ion probleTni: Syntex error on tokens, deletefcensat7Bmaln飞.java:9分析:(1) 因为i/=0;(即i=i/O;) 语句发生的运行异常为 ArithmeticException 类错误(即算数错 误)。(2) 该程序中catch语句中捕捉的是IndexOutOfBoundsException 类的错误(即数组越界错 误),所以无法捕获try语句中出错的程序,所以最终程序输出发生错误。3.包含多个catch子句的异常处理程序程序功能:在try 子句中设计两个可能出现的异常,当a为0时会发生异常。另外一个是肯定的异常

6、,因为数组 c的长度为1,定义c42是为法的。通过两个catch子句分别来捕获异 常。运行结果:实验下面两种情况:1)在程序运行时不输入参数,则args.length 的值为0,分析运行结果。2 froblerws Javado亡Declatatk.onConsole 2常terminated)1 2 3 4 program Java Application IC: “mgran FilesVJavaVjre7binS.javw. eice (2013*42651 45)a H 发生了被 口 除:java. iang. Ar ithmeticExceptions / loy se-rc分析:(

7、1)程序从main()函数入口执行try -catch语句。(2) 首先执行try中语句,根据int a=args.length;语句得出输入的a的值即为数组c的长度。因为程序中没有输入a的值,所以a的值默认为0,即数组c的长度为0;(3) 执行int b=42/a;语句,因为a=0,而算术运算中除数不可以为0,所以发生运行异常, 抛出ArithmeticException 类错误(即算术错误),跳出 try语句。(4) Catch语句中捕获到异常 ArithmeticException 类错误,所以对错误语句进行处理,即输 出算术错误原因。(5) 结束程序。2)在运行程序时,输入22,分析运

8、行结果。FrublemsJavadoc底 Decl:ar ati QBLQBLO Console 3分析:2程序从main()函数入口执行try -catch语句。3 首先执行try中语句,根据int a=args.length;语句得出输入的a的值即为数组c的长 度。4 执行输入语句,a的值22,即数组c的长度为22.4)执行int b=42/a; 语句,因为a不为0 ,所以没有发生运行异常。(5)继而执行int c=1; 语句,定义一个数组c,并初始化c0=1;没有发生运行异profruiiprofruii Jiv*Jiv* ApplicationApplication C C Pro(r

9、fcihPro(rfcih(013(013- -2S-2S 10:5610:56 05)05)22Ia = 22数组下扌示越界: jsiv邑”乱110. A匸waylnd亡xOu匸OfBoimcJsExGEp匸ion : 42 2 常。(6) 再执行c42=99;语句,因为数组长度只有 22,没法达到42,所以发生运行异常,抛岀ArraylndexOutOfBoundsException类错误(即数组越界错误),跳岀 try 语句。(7) Catch语句中捕获到异常 ArrayIndexOutOfBoundsException类错误,所以对错误语句 进行处理,即输出越界数组的下标。(8) 结束

10、程序。二.使用throw 语句抛出异常1.throw 语句的作用在上面的实验中,可以发现,异常对象是Java运行时由系统抛出的。抛出异常也可以通过使用throw语句实现。throw 是Java语言的关键字,用来告知编译器此处要发生一个异常。 throw后面要跟一个新创建的异常类对象,用于指出异常的名称和类型。throw 语句格式为: ;程序会在throw 语句处立即终止,转向trycatch寻找异常处理方法,不再执行throw后面的语句。2.throw 语句的使用运行结果:iJ Problems Javadoe -:1atiOR 旦旦 CMseile 3Ct arm in atJava App

11、li ctti on C: PrQ5ram Is i 1 Jjr sT bi j C2013_4_2S 上午11 ; 25: 18)在throwPtoces方法中hl联个空指针异第再次捕获: jmvsi. lmnig. Null.Null. PointPoint已 r r Excepts inn: 空扌旨针异常分析:(1) 程序从main()函数入口,执行main()函数中的try.catch 语句。(2) 首先执行try语句,调用throwProcess() 函数。(3) 在throwProcess() 函数中调用try.catch 语句。在try语句中,用throw 语句抛出异常 对象 N

12、ullPointerException(”空指针异常”)。(4) 在catch语句中,通过对象捕获到异常语句对其进行操作。首先通过调用System.out.println(n在throwProcess方法中捕获一个+e.getMessage();语句在屏幕上输出在 throwProcess方法中捕获一个空指针异常”。再执行throw e;语句从throwProcess()函数中抛出异常对象 e(即引用空的尚无内存空 间的对象)。(5) 回到ma in ()函数中的catch语句捕获到throwProcess()函数中抛出的异常,并对其进行 处理。执行System.out.println(”再次

13、捕获:+e);语句,在屏幕上输出再次捕获:java .Ian g.NullPo in terExcepti on:空指针异常”。(6) 结束程序。三.使用throws 子句1. throws子句的作用throws子句一般用来表明在使用该方法时可能抛出异常但不捕获的异常。异常由系统来处理。throws子句也可以指出抛出异常是Ru ntimeException或自定义异常类,即异常的类型,以便准备调用其它方法捕获它,这种情况一般需要两个方法来分别处理抛出异常和处理异常。2只是在方法中抛出异常的程序对于程序中无法处理的异常,可以使用throws子句在方法中抛出异常交由系统处理。程序功能:在程序中打开

14、文件a3.txt,因为该文件可能不存在或路径不对,所以存在lOException类型异常的可能,因此这里使用 throws来抛出异常。运行结果:A. Frsblens Javadoc Dtelaraiti on Q Comole 胡胡Java Appli ealio C: tFrogx an f alisJavajreTlbiiiL.j LX4_11 Java Appli 匚匚zti口口 nFJAVASStfebi njavaw.EMe (2013-5-4 下牛下牛 1:15:44)3 ntathod中?中?i出出中鼻中鼻當當分析:(1) java IO流在java.io包中,所以通过impo

15、rt语句引入包文件夹java.io下的类。(2)程序从mian()函数入口。(3)首先执行try.catch 语句,在try语句中调用mathod()函数。(4) mathod()函数中首先执行 System.out.println(n在mathod 中抛出一个异常”);语句,在屏幕上换行输出,在mathod中抛出一个异常”。再执行 throw newIIIegalAccessException();语句,发生异常抛出 lllegalAccessException类异常。Mathod()函数捕获到lllegalAccessException类异常,抛出。(5)main()函数中的catch语句

16、捕获到函数中抛出的异常,对异常进行处理。在屏幕上输出 异常信息。(6) 结束程序。四.使用输入输出流类1.使用标准数据流的应用程序标准数据流指在字符方式下(如DOS提示符)程序与系统进行输入输出的方式,键盘和显示器屏幕是标准输入输出设备,数据输入的起点为键盘,数据输出的终点是屏幕,输出的 数据可以在屏幕上显示出来。(1) 程序功能:将键盘上输入的字符在屏幕上显示出来。(2) 编译LX5_3.java 文件。在命令提示符窗口运行LX5_3.class 文件,并输入1234,分 析结果。/_/_ ProblemsProblems 覘 JavadocJavadoc 国 DeclarationDecl

17、aration 口 Cnnsnl*Cnnsnl*terminated LX5_3LX5_3 (Java(Java ApplicationApplication 复习贺料试二下血安装邑(2013-5-4(2013-5-4 TF1:SB:22)TF1:SB:22)9.9.tt宇尸誉旦车更吕弄itit、:1 F n +bufferbuffer *售云孝射當;49 50 51 52 13 10?buffer?buffer手吁元看=12341234分析:(1) 程序从main()函数入口。(2) 首先定义一个byte型的缓冲区buffer ,缓冲区的最多元素个数为10个。(3) 执行输出语句,在屏幕上输

18、出“从键盘输入不超过10个字符,按回车键结束输入:”。(4) 通过int count =System.in.read(buffer);语句,将输入的字符进行读取,并存放到缓冲区中。(注意:空格亦表示一个字符。因为缓冲区只有10个字符的空间,所以只会读取前10个字符)执行System.out.println(” 保存在缓冲区buffer中元素的个数为:+count);语句。(注意:保存在缓冲区的元素个数最多为10个,包含了 ”0”和”n”需要2个字符空间。)(5) 通过循环语句在屏幕上依次输出保存在缓冲区中的字符值。(6) 再通过调用 System.out.write(buffer, 0, bu

19、ffer.length);语句,读取出缓冲区中的 字符元素。(7) 结束程序。2.使用文件输入输出流的应用程序(1) 程序功能:将保存在本地机当前文件夹中的LX5_1.HTML文本文件的内容在屏幕上显示出来,然后将其另存为LX5_1.txt 文件。(2) 编写LX5_4.java 程序文件,源代码如下。import java.io.*;public class LX5_4 public static void main(String args) throws IOException FileReader in=_new FileReader( _IX5_1.hml _ / 建立文件输入流Buf

20、feredReader bin=_new BufferedReader (in);/ 建立缓冲输入流FileWriter out= new FileWriter( LX5_1.txt,true);/建立文件输出流Stri ng str;while (str=bi n. readLi ne()!=n ull) /将缓冲区内容通过循环方式逐行赋值给字符串strSystem. out .printf(”字符串str: +str):/在屏幕上显示字符串 strout.write(str+n);将字符串str 通过输出流写入LX5_1.txt 中in.close();out.close();运行结果:分

21、析:(1)程序需要从本地机当前文件夹中打开LX5_1.HTML文本文件,所以要在该project的当前文件夹下创建一个 HTM类的文件“ LX5_1.htm ”,文件中文本内容如下。(2)程序冲main()函数入口。(3) 先建立文件输入流和缓冲输入流、文件输出流并通过字节流或字符流的子类进行流对象的实例化,其中输入流的内容来自于LX5_1.htm,输出流的输出的地方为LX5_1.txt。4)定义一个字符串变量 str,通过循环语句将LX5_1.htm文件中的内容赋值给字符串 str, 并通过System. out .printf( 字符串str: +str);语句依次在屏幕上显示出每一行内容

22、。(5)再通过out.write(str+n);语句将字符串str 通过输出流写入 LX5_1.txt 中。6)调用in.close(); 和out.close(); 语句关闭输入流和输出流。(7)结束程序。3.使用随机文件类的应用程序使用文件输入类FileReader只能将文件内容全部读入。如果要选择读入文件的内容,可 使用随机文件类RandomAccessFile 。new RandomAccessFile(LX5_1.htm , rw);文件指针位置为:+rf.getFilePoi nter();(1)程序功能:建立数据流,通过指针有选择的读入文件内容。(2)编写LX5_5.java 程

23、序文件,源代码如下。import java.io.*;class LX5_5 public static void main(String args) String str=First linen,Second linen,Last linen;try Ran domAccessFile rf=System.out.pri ntl n(inSystem.out.pri ntln(”文件的长度为:+rf.le ngth();rf.seek(rf.le ngth();System.out.pri ntln(”文件指针现在的位置为:+rf.getFilePoi nter();for (int i=0

24、; i3; i+)rf.writeChars(stri);_/ 字符串转为字节串添加到文件末尾rf.seek(10);System.out.pri ntln(n选择显示的文件内容: );Stri ng s;while (s=rf.readLi ne()!=null)System.out.pri ntl n( s);rf.close();catch (FileNotF oun dExcepti on fnoe) catch (lOExcepti on ioe) 运行结果:Problem5 Javadoc Declaration 曰 Console 3LX5.5LX5.5 JmJm 如plicdi

25、onplicdion】F:F:虫习粉牝尢二下”阳慣偻裝越商叫旳ammsamms 口013013 5 5丁 PFiftSftSl)PFiftSftSl)卜怛勺 0立哼曲世为- &兰聲且示甘兗*內客.linelineSecond lineLastLast lineline分析:(1) 程序从main()函数入口。(2) 首先创建字符串数组 Stri ng str=First linen,”Seco nd lin en,Lastlin en;(3) 然后执行try.catch语句。首先在try语句中在当前目录下生成一个可读/写的文件“ LX5_1.htm ”。(4) 之后通过对象rf依次调用Rand

26、omAccessFile文件类的成员函数在屏幕上输出初始状态 下的文件指针位置和文件长度。(5) 调用rf.seek(rf.length();语句,seek函数来移动指针位置,再寻找到文件指针现在的位置。(6) 通过for循环语句,将字符串转为字节串添加到文件末尾。7) rf.seek(IO);语句将文件指针向右移10位,在屏幕上输出提示语句。(8) 定义变量s,通过while语句循环方式逐行赋值给字符串s,然后在屏幕上依次输出文件 中的内容。(9) 调用rf.close();语句关闭文件。(10)Try语句中未发生错误,所以 catch语句未捕获到异常程序即未执行。11)跳出try语句,结束

27、程序。4.使用数据输入输出流与文件输入输出流类的应用程序使用数据输出流DataOutputStream和数据输入流DatalnputStream可以读取或写入任何Java类型的数据,不用关心它们的实际长度是多少字节。一般与文件输入流FileInputStream和输出流类 FileOutputStream起使用。程序功能:将整型数据和字符串对象通过数据输出流写到文件中。将文件中的整型数据 和字符串对象通过数据输出流读出,并在屏幕上显示文件中的内容。运行结果:區 Prohlems Juvadw 葛 OeclArtticn 娶 Console Ki I冀餐 terminated*terminate

28、d* LX5_6 lavalava ApplicationApplication 填习w.exew.exe (2013-5-7 下午 11:32皿刁L21 1爭百2 2北當1 12 M M1马2N玄1 174742 2ft*ft*1 12 1 1旳2 2 士窮1 1侶2 U U1 1卵马分析:(1)程序从ma in ()函数入口。(2)首先执行第一个try.catch语句。在try语句中程序先以LX5_6.txt作为文件传入对象构建一个文件输出流。(3)再创建了一个数据输出流对象dout,将fout包装到dout中,通过数据输出流将相应的内容写入到LX5_6.txt中,然后关闭数据输出流.(4

29、)由于在try语句中没有遇到输入输出异常,所以第一个catch语句不执行。然后执行第二个try.catch 语句。在第二个try语句中建立了一个输入流对象和数据输入 流对象,然后通过数据输入流对象从文件LX5_6.txt中读入字符串并输出。在读取过程中,当所读到的整数为-1时,即表示已经读完。(6)然后关闭数据输出流,跳出try语句,最后在第二个catch语句中也没有捕获到输入输出异 常。且程序运行的次数越多所以读出的内容较多。5.使用对象输入输出流的应用程序使用对象流可以直接写入或读取一个对象。由于一个类的对象包含多种信息,为了保证 从对象流中能够读取到正确的对象,因此要求所有写入对象流的对

30、象都必须是序列化的对象。一个类如果实现了 Serializable 接口,那么这个类的对象就是序列化的对象。Serializable接口没有方法,实现该接口的类不需要实现额外的方法。程序功能:保存对象信息到文件,并将文件中的对象信息显示出来。运行结果:PiCLlems fi Js adc: i. Declt ation 貝貝 Console 胡胡 LX5_7LX5_7 Jsv.Jsv. AppliutionAppliution啟复习啟复习i i n)avaw-exen)avaw-exe (2013-5-7(2013-5-7 T11T11J J4343E EO5)O5)5S: LX5_7inte

31、rfmte java.io.Serializable1 fitfe 14分析:(1) 首先定义一个实现 Serializable 类接口的类LX5_7。该序列化接口是穿行化必须要实现的接口,在此类中通过两个构造方法进行相应的数据的初始化,分别为LX5_7()与LX5_7(intbh,Stri ng xm,i nt nl)。(2) 然后定义了一个保存到文件中的方法save(String fname),在try语句中构建了一个文件输出流和一个对象输出流,通过对象输出流将指定的内容写入到文件中。因为程序未发生 运行异常错误,所以没有执行catch语句。(3) 再定义一个显示文件中对象信息的方法display(Stringfname),在try语句中构造了一个文件输入流和一个对象输入流,通过对象输入流来读取LX5_7文件中的对象并存放在对象00中,在通过对对象00的操作来获得类名和内容。因为程序未发生运行异常错误,所以没有执行catch语句。(4) 在ma in ()函数中,获取的文件名为 LX5_7.obj,定义第一个对象的内容为“1张驰14”,然后通过调用O1.save(fname);O1.display(fname);对第一个对象的内容进行写

温馨提示

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

最新文档

评论

0/150

提交评论