Java实验报告5
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Math 是一个最终类,含有基本数学运算函数,如指数运算、对数运算、求平方根、三角函数、 随机数等,可以直接在程序中加 Math.前缀调用。
山东师范大学人口资源与环境学院
(三)使用日期类 Java提供了3个日期类:Date、Calendar和DateFormat。其中,Date类主要用于创建日期对象并获 取日期,Calendar类可获取和设置日期,DateFormat类用来设置日期的格式。
Java 语言规定的基准日期为 1970.1.1 00:00:00 格林威治(GMT)标准时间,当前日期是由基准 日期开始所经历的毫秒数转换出来的。 (四)使用向量类Vector 大多数编程语言中的数组是固定长度的,即数组一经建立就不能在使用过程中改变其长度。Java引 入Vector类来创建可以改变长度的变量。Vector被设计成一个能不断增长的序列,它类似于可变长 数组,但功能更加强大,因为任何类型的对象都可以放入Vector类的对象中。通过调用Vector封装 的方法,可以随时添加或删除向量元素,以及增加或缩短向量序列的长度。
山东师范大学人口资源与环境学院
实 验 报 告(五)
实验课程 学号 实验日期
Java 语言程序设计
201214010422 2014.5.5
姓名 指导教师
实验名称 吴琳
董春玲
常用系统类的使用——以 Java IO 为
例
班级
2012 地信
成绩
一、实验目的与要求 1.掌握不同类型的输入输出流类,标准数据流、文件流、数据输入输出流、对象流等。 2.掌握RandomAccessFil类的使用。 3.掌握 ZipInputStream 流的使用。 4.了解数学函数类、日期类、向量类等常用系统类的使用方法。
} 5. 使用对象输入输出流的应用程序
使用对象流可以直接写入或读取一个对象。由于一个类的对象包含多种信息,为了保证从对象 流中能够读取到正确的对象,因此要求所有写入对象流的对象都必须是序列化的对象。一个类如果 实现了 Serializable 接口,那么这个类的对象就是序列化的对象。Serializable 接口没有方法,实现该 接ቤተ መጻሕፍቲ ባይዱ的类不需要实现额外的方法。 (二)使用数学函数类
四、实验结果与总结 1.用 randomaccessfile 流将一个文本文件倒置读出 import java.io.*; public class Xiti7{ public static void main(String args[]) { File f=new File("E,java");; try{ RandomAccessFile random=new andomAccessFile(f,"rw"); random.seek(0); long m=random.length(); while(m>=0) { m=m-1; random.seek(m); int c=random.readByte(); if(c<=255&&c>=0) { System.out.print((char)c); } else { m=m-1; random.seek(m); byte cc[]=new byte[2]; random.readFully(cc); System.out.print(new String(cc)); } } }
山东师范大学人口资源与环境学院
catch(IOException e){} } } 2.使用数学函数类 源程序如下。 import java.util.*; class KY1_2{ public static void main(String args[]) { Random r1=new Random(1234567890L); Random r2=new Random(1234567890L); boolean b=r1.nextBoolean(); int i1=r1.nextInt(100); int i2=r2.nextInt(100); double i3=r1.nextDouble(); double i4=r2.nextDouble(); double d1=Math.sin(Math.toRadians(30.0)); double d2=Math.log(Math.E); double d3=Math.pow(2.0, 3.0); int r=Math.round(33.6F); System.out.println("b 的随机数不为 0 时 "+b); System.out.println("i1 的随机数为 "+i1); System.out.println("i2 的随机数为 "+i2); System.out.println("i3 的随机数为 "+i3); System.out.println("i4 的随机数为 "+i4); System.out.println("30 弧度的正弦值:Math.sin(Math.toRadians(30.0))= "+d1); System.out.println("E 的对数值:Math.log(Math.E)= "+d2); System.out.println("2 的 3 次方:Math.pow(2.0, 3.0)= "+d3); System.out.println("33.6F 四舍五入:Math.round(33.6F)= "+r); } }
(3)编译并运行程序,结果如图 4. 使用数据输入输出流与文件输入输出流类的应用程序
山东师范大学人口资源与环境学院
使用数据输入流DataOutputStream和数据输出流DataInputStream可以读取或写入任何Java类型的 数据,不用关心它们的实际长度是多少字节。一般与文件输入流FileInputStream和输出流类 FileOutputStream一起使用。 (1)程序功能:将整型数据和字符串对象通过数据输出流写到文件中。将文件中的整型数据和字 符串对象通过数据输出流读出,并在屏幕上显示文件中的内容。 (2)编写LX5_6.java程序文件,源代码如下。 import java.io.*; public class LX5_6 { public static void main(String arg[]) { try { //添加方式创建文件输出流 FileOutputStream fout = new FileOutputStream("LX5_6.txt",true); DataOutputStream dout = new DataOutputStream(fout); dout.writeInt(1); dout.writeChars("罗马"+"\n"); dout.writeInt(2); dout.writeChars("北京"+"\n"); dout.close(); } catch (IOException ioe){} try { FileInputStream fin = new FileInputStream("LX5_6.txt"); DataInputStream din = new DataInputStream(fin); int i = din.readInt(); while (i!=-1) //输入流未结束时,输入流结束时i为-1 { System.out.print(i+" ");
二、实验内容与步骤 1. 使用标准数据流的应用程序 标准数据流指在字符方式下(如DOS提示符)程序与系统进行输入输出的方式,键盘和显示器屏幕 是标准输入输出设备,数据输入的起点为键盘,数据输出的终点是屏幕,输出的数据可以在屏幕上 显示出来。 (1)程序功能:将键盘上输入的字符在屏幕上显示出来。 (2)编写LX5_3.java程序文件,源代码如下。 class LX5_3{ public static void main(String[] args) throws java.io.IOException { byte buffer[]=new byte[10]; System.out.println("从键盘输入不超过10个字符,按回车键结束输入:"); int count =System.in.read(buffer);//读取输入的字符并存放在缓冲区buffer中 System.out.println("保存在缓冲区buffer中元素的个数为:"+count); System.out.println("buffer中各元素的值为:"); for (int i=0;i<count;i++){ System.out.print(" "+ buffer[i]);//在屏幕上显示buffer元素的值 } System.out.println(); System.out.println("输出buffer字符元素:"); System.out.write(buffer, 0, buffer.length); } } 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("LX5_1.HTML");//建立文件输入流 BufferedReader bin=new BufferedReader(in);//建立缓冲输入流 FileWriter out=new FileWriter(" LX5_1.txt",true);//建立文件输出流 String str; while ((str=bin.readLine())!=null) { //将缓冲区内容通过循环方式逐行赋值给字符串str System.out.println(str);//在屏幕上显示字符串str out.write(str+"\n");//将字符串str通过输出流写入LX5_1.txt中 } in.close(); out.close(); } } 3. 使用随机文件类的应用程序 使用文件输入类FileReader只能将文件内容全部读入。如果要选择读入文件的内容,可使用随机文 件类RandomAccessFile。 (1)程序功能:建立数据流,通过指针有选择的读入文件内容。 (2)编写LX5_5.java程序文件,源代码如下。 import java.io.*; class LX5_5 { public static void main(String args[]) { String str[]={"First line\n","Second line\n","Last line\n"}; try { RandomAccessFile rf=new RandomAccessFile("LX5_5.txt", "rw"); System.out.println("\n文件指针位置为:"+rf.getFilePointer()); System.out.println("文件的长度为:"+rf.length()); rf.seek(rf.length()); System.out.println("文件指针现在的位置为:"+rf.getFilePointer()); for (int i=0; i<3; i++) rf.writeChars(str[i]); // 字符串转为字节串添加到文件末尾 rf.seek(10); System.out.println("\n选择显示的文件内容:"); String s; while ((s=rf.readLine())!=null) System.out.println(s); rf.close(); } catch (FileNotFoundException fnoe) {} catch (IOException ioe) {} } }
char ch ; while ((ch=din.readChar())!='\n') //字符串未结束时 System.out.print(ch); System.out.println(); i = din.readInt(); } din.close(); } catch (IOException ioe){} }
山东师范大学人口资源与环境学院
(三)使用日期类 Java提供了3个日期类:Date、Calendar和DateFormat。其中,Date类主要用于创建日期对象并获 取日期,Calendar类可获取和设置日期,DateFormat类用来设置日期的格式。
Java 语言规定的基准日期为 1970.1.1 00:00:00 格林威治(GMT)标准时间,当前日期是由基准 日期开始所经历的毫秒数转换出来的。 (四)使用向量类Vector 大多数编程语言中的数组是固定长度的,即数组一经建立就不能在使用过程中改变其长度。Java引 入Vector类来创建可以改变长度的变量。Vector被设计成一个能不断增长的序列,它类似于可变长 数组,但功能更加强大,因为任何类型的对象都可以放入Vector类的对象中。通过调用Vector封装 的方法,可以随时添加或删除向量元素,以及增加或缩短向量序列的长度。
山东师范大学人口资源与环境学院
实 验 报 告(五)
实验课程 学号 实验日期
Java 语言程序设计
201214010422 2014.5.5
姓名 指导教师
实验名称 吴琳
董春玲
常用系统类的使用——以 Java IO 为
例
班级
2012 地信
成绩
一、实验目的与要求 1.掌握不同类型的输入输出流类,标准数据流、文件流、数据输入输出流、对象流等。 2.掌握RandomAccessFil类的使用。 3.掌握 ZipInputStream 流的使用。 4.了解数学函数类、日期类、向量类等常用系统类的使用方法。
} 5. 使用对象输入输出流的应用程序
使用对象流可以直接写入或读取一个对象。由于一个类的对象包含多种信息,为了保证从对象 流中能够读取到正确的对象,因此要求所有写入对象流的对象都必须是序列化的对象。一个类如果 实现了 Serializable 接口,那么这个类的对象就是序列化的对象。Serializable 接口没有方法,实现该 接ቤተ መጻሕፍቲ ባይዱ的类不需要实现额外的方法。 (二)使用数学函数类
四、实验结果与总结 1.用 randomaccessfile 流将一个文本文件倒置读出 import java.io.*; public class Xiti7{ public static void main(String args[]) { File f=new File("E,java");; try{ RandomAccessFile random=new andomAccessFile(f,"rw"); random.seek(0); long m=random.length(); while(m>=0) { m=m-1; random.seek(m); int c=random.readByte(); if(c<=255&&c>=0) { System.out.print((char)c); } else { m=m-1; random.seek(m); byte cc[]=new byte[2]; random.readFully(cc); System.out.print(new String(cc)); } } }
山东师范大学人口资源与环境学院
catch(IOException e){} } } 2.使用数学函数类 源程序如下。 import java.util.*; class KY1_2{ public static void main(String args[]) { Random r1=new Random(1234567890L); Random r2=new Random(1234567890L); boolean b=r1.nextBoolean(); int i1=r1.nextInt(100); int i2=r2.nextInt(100); double i3=r1.nextDouble(); double i4=r2.nextDouble(); double d1=Math.sin(Math.toRadians(30.0)); double d2=Math.log(Math.E); double d3=Math.pow(2.0, 3.0); int r=Math.round(33.6F); System.out.println("b 的随机数不为 0 时 "+b); System.out.println("i1 的随机数为 "+i1); System.out.println("i2 的随机数为 "+i2); System.out.println("i3 的随机数为 "+i3); System.out.println("i4 的随机数为 "+i4); System.out.println("30 弧度的正弦值:Math.sin(Math.toRadians(30.0))= "+d1); System.out.println("E 的对数值:Math.log(Math.E)= "+d2); System.out.println("2 的 3 次方:Math.pow(2.0, 3.0)= "+d3); System.out.println("33.6F 四舍五入:Math.round(33.6F)= "+r); } }
(3)编译并运行程序,结果如图 4. 使用数据输入输出流与文件输入输出流类的应用程序
山东师范大学人口资源与环境学院
使用数据输入流DataOutputStream和数据输出流DataInputStream可以读取或写入任何Java类型的 数据,不用关心它们的实际长度是多少字节。一般与文件输入流FileInputStream和输出流类 FileOutputStream一起使用。 (1)程序功能:将整型数据和字符串对象通过数据输出流写到文件中。将文件中的整型数据和字 符串对象通过数据输出流读出,并在屏幕上显示文件中的内容。 (2)编写LX5_6.java程序文件,源代码如下。 import java.io.*; public class LX5_6 { public static void main(String arg[]) { try { //添加方式创建文件输出流 FileOutputStream fout = new FileOutputStream("LX5_6.txt",true); DataOutputStream dout = new DataOutputStream(fout); dout.writeInt(1); dout.writeChars("罗马"+"\n"); dout.writeInt(2); dout.writeChars("北京"+"\n"); dout.close(); } catch (IOException ioe){} try { FileInputStream fin = new FileInputStream("LX5_6.txt"); DataInputStream din = new DataInputStream(fin); int i = din.readInt(); while (i!=-1) //输入流未结束时,输入流结束时i为-1 { System.out.print(i+" ");
二、实验内容与步骤 1. 使用标准数据流的应用程序 标准数据流指在字符方式下(如DOS提示符)程序与系统进行输入输出的方式,键盘和显示器屏幕 是标准输入输出设备,数据输入的起点为键盘,数据输出的终点是屏幕,输出的数据可以在屏幕上 显示出来。 (1)程序功能:将键盘上输入的字符在屏幕上显示出来。 (2)编写LX5_3.java程序文件,源代码如下。 class LX5_3{ public static void main(String[] args) throws java.io.IOException { byte buffer[]=new byte[10]; System.out.println("从键盘输入不超过10个字符,按回车键结束输入:"); int count =System.in.read(buffer);//读取输入的字符并存放在缓冲区buffer中 System.out.println("保存在缓冲区buffer中元素的个数为:"+count); System.out.println("buffer中各元素的值为:"); for (int i=0;i<count;i++){ System.out.print(" "+ buffer[i]);//在屏幕上显示buffer元素的值 } System.out.println(); System.out.println("输出buffer字符元素:"); System.out.write(buffer, 0, buffer.length); } } 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("LX5_1.HTML");//建立文件输入流 BufferedReader bin=new BufferedReader(in);//建立缓冲输入流 FileWriter out=new FileWriter(" LX5_1.txt",true);//建立文件输出流 String str; while ((str=bin.readLine())!=null) { //将缓冲区内容通过循环方式逐行赋值给字符串str System.out.println(str);//在屏幕上显示字符串str out.write(str+"\n");//将字符串str通过输出流写入LX5_1.txt中 } in.close(); out.close(); } } 3. 使用随机文件类的应用程序 使用文件输入类FileReader只能将文件内容全部读入。如果要选择读入文件的内容,可使用随机文 件类RandomAccessFile。 (1)程序功能:建立数据流,通过指针有选择的读入文件内容。 (2)编写LX5_5.java程序文件,源代码如下。 import java.io.*; class LX5_5 { public static void main(String args[]) { String str[]={"First line\n","Second line\n","Last line\n"}; try { RandomAccessFile rf=new RandomAccessFile("LX5_5.txt", "rw"); System.out.println("\n文件指针位置为:"+rf.getFilePointer()); System.out.println("文件的长度为:"+rf.length()); rf.seek(rf.length()); System.out.println("文件指针现在的位置为:"+rf.getFilePointer()); for (int i=0; i<3; i++) rf.writeChars(str[i]); // 字符串转为字节串添加到文件末尾 rf.seek(10); System.out.println("\n选择显示的文件内容:"); String s; while ((s=rf.readLine())!=null) System.out.println(s); rf.close(); } catch (FileNotFoundException fnoe) {} catch (IOException ioe) {} } }
char ch ; while ((ch=din.readChar())!='\n') //字符串未结束时 System.out.print(ch); System.out.println(); i = din.readInt(); } din.close(); } catch (IOException ioe){} }