java实验报告.docx_第1页
java实验报告.docx_第2页
java实验报告.docx_第3页
java实验报告.docx_第4页
java实验报告.docx_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

Java实 验 报 告学院:*班级:*姓名:*学号:*指导老师: * 实验地点:* 实验环境: * 实验一实验名称:Java程序的编辑、编译和运行实验目的要求:编写一个简单的Java应用程序,输出两句话:“Hello, World!”“This is the first Java program.”实验内容:1. 创建目录D:你的学号。把这个目录作为我们的工作目录。我们的Java源程序、编译后的字节码文件和用来运行Java Applet的html文件都放在这个目录中。2. 从ftp服务器上下载jdk并安装。3. 启动附件中记事本工具。4. 在记事本编辑如下源程序:public class Ex1public static void main( String args )System.out.println(Hello, World!);System.out.println(This is the first Java program.);5. 保存程序。注意,保存源程序时,程序名要与主类名一致。即要用Ex1.java作为本程序的文件名。(记事本默认的扩展名是*.txt,要改为*.java)。把该文件保存到第一步所建的目录中(即D:你的学号)。6. 编译程序。启动MS_DOS窗口,键入如下命令:(假如你的学号是410808,即你建的目录为D:410808)C:WINDOWSd:D:cd 410808D:410808javac Ex1.java如果编译成功,则在D:410808目录中生成字节码文件Ex1.class。7. 运行程序。D:410808java Ex1就可以运行程序。注意:Ex1是上一步编译生成的Ex1.class,文件名有大小写区别。8. 观察程序输出的结果是否与实验要求相符。9. 输入和调试一下程序。import java.text.SimpleDateFormat;import java.util.Date;public class TestDate public static void main(String args) Date myDate=new Date(System.currentTimeMillis(); System.out.println(myDate.toString(); SimpleDateFormat sDateFormat=new SimpleDateFormat(yyyy/MM/dd HH:mm:ss ); System.out.println(sDateFormat.format(myDate); 实验结果:实验过程或步骤(要求比较详细地写出实验过程、实验中遇到的问题及解决方案):实验过程:第一步:建立文件夹,将文件夹命名为自己的学号:2010212007;第二步:新建文本文档,将其格式改为.java.然后再新建的.java文件中编写源代码,将.java文件命名为类名。并保存。第三步:打开计算机命令提示符,在第一行写入d:并回车;接着输入cd+新建文件夹名,然后回车;再输入javac+ java文件名,回车,如果生成类成功,则继续进行程序的运行输入java+类名,编译成功。实验体会:1. 在编写类名的时候切记要严格要求大小写,在单一类名,即由一个特定意思的单词组成时首字母大写,两个时,第二个大写,在java文件名中也应如此;2. 注意在代码中存在很多严格要求大小写的关键字,如String、System等,还有分号也要注意;3. 在运行程序的时候,在命令指示符中要先输入d:,意思是找到源代码存放文件夹,也就是类生成的文件夹,如果没能正常的生成类的话,不应删除源代码,而是在命令指示符中查看出错的地方,并使用上下键来找寻出错的步骤,能提高编程效率。 实验二实验名称:java控制语法实验目的要求:编写一个含有分支控制结构的Java应用程序。实验内容:3.1 分支控制结构1.编写一个成绩转换的java程序。其对应关系如下:分数转换后的输出结果059不及格6069及格7079中8089良90100优其它错误2.在记事本编辑如下源程序:public class Ex2public static void main( String args )int score =70;if(score=0)&(score=60)&(score=70)&(score=80)&(score=90)&(score=100)System.out.println(优);elseSystem.out.println(错误); 3.保存程序Ex2.java,编译程序,并运行程序,查看结果。4.修改score变量的初始值(0、59、60、79、80、99、105),重新编译运行,查看结果是否正确。5.switch语句替代if-else语句,并重新编译运行程序,再重复第4步,测试程序是否正确。3.2循环控制结构 1.编写一个成绩统计的java程序。先在数组中定义5个学生的成绩,再求出平均成绩,最后找出最高分。2.在记事本编辑如下源程序:public class Ex3public static void main( String args )int score=60,76,90,48,80;int sum =0;int max =0;for(int i=0;imax)max =scorei;double average =(double)sum /5;System.out.println(Average =+average);System.out.println(Max =+max);3.保存程序Ex3.java,编译运行程序,观察程序的运行结果,体会for循环语句的执行流程。4.用while语句替代for语句,找出最低分,并重新编译运行程序。代码如下:public static void main(String args) int score=60,76,90,48,80; int min = Integer.MIN_VALUE; int i=0;while(i score i) min = score i;i+ System.out.println(min);5.用do-while语句替代for语句,找出最低分,并重新编译运行程序。代码如下:public static void main(String args) int score=60,76,90,48,80; int min = Integer.MIN_VALUE; int i=0;do if(min score i) min = score i;i+while(i score.length) System.out.println(min);6.用循环语句对5个学生的成绩排序,并按从小到大的顺序输出。public class BubbleSort implements SortUtil.Sort public void sort(int data) int temp; for(int i=0;ii;j-) if(datajdataj-1) SortUtil.swap(data,j,j-1); 实验结果:实验过程实或步骤:1, 首先在java文件夹中新建java文件;2, 代码的完成。首先是要创建类,就前一个实验而言,主要使用ifelse语句,所以先得分清各个条件,在每个if后面输入不同的条件,切记不能有交集,然后写入输出语句,输出在不同情况下的不同结果;就第二个程序而言,采用了for循环,写入程序后运行即可。3, 调试程序。由于程序本身就很简短,所以很多情况下是只需直接运行的.实验体会:首先就是用到了SortUtil.Sort接口,这将在后面学到,巧妙的使用接口和子类的派生,对于java程序编写的效率提高很有用;其次,在使用for循环的时候很容易由于括号后面误加了分号而出错,所以一定要注意;最后,在对i取区间的时候,要注意length的含义,一般是从0开始,所以是小于而不是小于等于。 实验三实验名称:java的类实验目的要求:一、实验目的:1. 掌握如何定义类以及类的成员变量、类的方法。2. 掌握对象的创建、对象属性的引用和方法的调用。3. 理解成员的访问权限。4. 掌握如何定义和使用构造方法。5. 掌握this的使用。6. 掌握关键字static、final的使用方法。7. 掌握构造方法的重载。8. 掌握派生子类的方法。9. 理解关键字super的含义。10. 理解继承中属性的隐藏和方法的覆盖机制。11. 掌握instanceof运算符的用法。12. 区别重载和覆盖。13. 理解在继承关系中构造方法的调用过程二、实验要求:1.编写一个含有简单类定义的Java应用程序。2. 编写一个含有多个构造方法的类的Java应用程序。实验内容:3.1 简单类1.定义一个学生类,它包括几个属性:学号(ID)、姓名(Name)、年龄(Age)、性别(Sex)。在main方法中创建一个学生类的对象,然后给这个对象赋初值,最后输出该学生的属性。2.在记事本编辑如下源程序:class Student public int ID;public String StuName;public int Age;public boolean Sex;class Ex4 public static void main(String args) / TODO: Add your code hereStudent stu =new Student();stu.ID =410808;stu.StuName =王杰;stu.Age =21;stu.Sex =true;System.out.println(学号+t+姓名+t+年龄+t+性别);System.out.println(stu.ID+t+stu.StuName+t+stu.Age+t+(stu.Sex?男:女);3.保存程序Ex4.java,编译程序,并运行程序,查看结果。4.把Student类中所有的成员变量的访问权限由public分别改为private、private protected、protected,保存并重新编译程序,看会出现什么结果。5.改写Student类,把Student类中所有的成员变量的访问权限由public改为private,并为每个成员变量定义两个方法,(如对于StuName属性,分别定义SetName(String n)、GetName()),使之通过Student类的方法来访问其成员变量。修改main方法的内容,使修改后的程序输出相同的结果3.2 类的构造1.定义一个点(Point)类,它包含横坐标x和纵坐标y两个属性,再给Point定义两个构造方法。2.定义一个圆(Circle)类,它包含圆心(Center)和半径(Radius)两个属性,再给圆定义4个构造方法和一个打印圆的面积的方法。3.在main方法中分别用4种不同的方法构造圆,并打印出圆的面积。4.在记事本编辑如下源程序:class Pointprivate int x;private int y;Point()SetXY(0,0);Point(int a,int b)SetXY(a,b);public int GetX() return x;public int GetY() return y;public void SetXY(int a, int b) x =a;y =b;class Circlefinal double PI =3.1415926;privatePoint Center;private intRadius;Circle() Center =new Point();Radius =5;Circle(Point Center) Radius =5;this.Center =Center;Circle(int Radius) this.Radius =Radius;Center =new Point();Circle(Point Center, int Radius) this(Center);this.Radius =Radius;public void PrintArea() double area =PI*Radius*Radius;System.out.println(*);System.out.println(Center =(+Center.GetX()+, +Center.GetY()+), +Radius =+Radius+, +Area =+area);System.out.println(*);public class Ex5 public static void main(String args) / TODO: Add your code herePoint center =new Point(2,2);int radius =3;Circle cir1 =new Circle();cir1.PrintArea();Circle cir2 =new Circle(center);cir2.PrintArea();Circle cir3 =new Circle(radius);cir3.PrintArea();Circle cir4 =new Circle(center,radius);cir4.PrintArea();5.保存程序Ex5.java,编译程序,并运行程序,查看分析结果。6.分析用4种不同方法构造圆的执行过程。7.在main方法中语句“cir1.PrintArea();”后面加入一条语句“cir1.PI =2;”,保存程序,并重新编译,会出现什么问题?8.将语句“this(Center);”改为“Circle(Center);”,保存程序,并重新编译,会出现什么问题?理解this关键字的不同用法。3.3 类的继承 1.定义一个点(Point)类,它包含横坐标x和纵坐标y两个属性,再给Point定义两个构造方法和一个打印点坐标的方法(Show())。2.定义一个圆(Circle)类,它继承Point类(它是一个点,圆心(Center),除此之外,还有属性半径(Radius),再给圆定义2个构造方法、一个打印圆的面积的方法(PrintArea())和一个打印圆中心、半径的方法(Show())。3.在记事本编辑如下源程序:class Pointprotected int x;protected int y;Point()SetXY(0,0);Point(int a,int b)SetXY(a,b);public int GetX() return x;public int GetY() return y;public void SetXY(int a, int b) x =a;y =b;public void Show() if(this instanceof Circle)System.out.println(中心: +(+x+, +y+);elseSystem.out.println(点: +(+x+, +y+);class Circle extends Pointfinal double PI =3.1415926;protected intRadius;Circle() Radius =5;Circle(Point Center, int Radius) super(Center.GetX(),Center.GetY();this.Radius =Radius;public void PrintArea() double area =PI*Radius*Radius;System.out.println(*);System.out.println(面积:+area);System.out.println(*);public void Show() super.Show();System.out.println(半径: +Radius);public class Ex6 public static void main(String args) Point center =new Point(2,2);center.Show();int radius =3;Circle cir1 =new Circle();cir1.Show();cir1.PrintArea();Circle cir4 =new Circle(center,radius);cir4.Show();cir4.PrintArea();4.保存程序Ex6.java,编译运行程序,观察并分析程序的运行结果。5.去掉语句“super.Show();”,再看看运行结果。理解程序中多太性的运用。6.在语句“SetXY(0,0);”和语句“SetXY(a,b);”添加一条语句“System.out.println(构造点(+x+, +y+);”,在语句“Radius =5;”和语句“this.Radius =Radius;”添加一条语句“System.out.println(构造圆(半径: +Radius+);”,重新编译运行程序,观察并理解所得到的结果,从而理解在继承关系中构造方法的调用过程。实验结果:3.1.2运行结果3.1.4运行结果改为private:改为protected:改为 private protected:3.2.4运行结果3.2.7运行结果:3.2.8运行结果:3.3.3运行结果:3.3.5运行结果:实验过程和步骤:1, 就第一个实验而言,如前面一样,首先创建类,这个类的目的是输出用户创建的内容,姓名,学号。年龄和性别,再次,就是要实例化,创建对象,对象的成员变量赋值,然后再输出;2, 第二个是类的构造,对象建立后,在对其进行方法,比如求面积,并且要调用和参数同名的的成员变量,所以在前面加this关键字;3, 第三个程序,首先是创建point父类,然后在创建circle子类来继承父类的相关方法在父类方法的基础上再次创建新方法,使之能够完成面积的运算。实验心得:1, 对于构造方法,虽然其不能直接作为方法来实现,但是意义上是为了给对象赋初值,所以需要创建,虽然有些类没有构造方法,但是系统会自动能够默认一个,并且在调用和参数同名的成员变量时,要加this关键字,2, 在类的继承实验中,在子类中可以再次声明一个新方法,但是父类方法任然保留。实验四实验名称:异常处理机制实验目的和要求:一、实验目的:1.掌握异常的基本概念。2.理解异常处理机制。3.掌握创建自定义异常的方法。二、实验要求:编写一个有异常处理的Java应用程序。实验内容:Java提供了异常处理机制,当程序中发生异常时,程序产生一个异常事件,相应地生成异常对象。系统从生成对象的代码开始,沿方法的调用栈逐层回溯,寻找相应的处理代码,并把异常对象交给该方法处理。1.在记事本编辑如下源程序:public class Ex7_1 public static void main(String args) String output =The ,quick ,brown ,fox ,jumps ,over ,the ,lazy ,dog.;int i =0;while(i12)System.out.print(outputi+);System.out.println(haha.);2.保存程序Ex7_1.java,编译运行程序,观察并分析程序的运行结果。The quick brown fox jumps over the lazy dog.Exception in thread main java.lang .ArrayIndexOutOfBoundsException at Ex7_1.main(Ex7_1.java:9),可以看出,在第9行出现了数组下标越界的异常,导致了程序的中止,而程序的最后一条语句“System.out.println(haha.);”没有执行。3.我们修改程序,加入异常处理,当程序发生异常时,经过异常处理后,程序还可以继续执行。修改代码如下:public class Ex7_2 public static void main(String args) String output =The ,quick ,brown ,fox ,jumps ,over ,the ,lazy ,dog.;int i =0;while(i1000)throw new MyException(“结果re=”+re+“超过了”+1000);return re;完善这个程序,并测试。代码如下:Static int Multiply(int n,int m) throws MyExceptionint re;re =n*m;if(re1000)throw new MyException(“结果re=”+re+“超过了”+1000);return re;trySystem.out.print(re);catch(ArrayIndexOutOfBoundsException e)System.out.println();System.out.println(下标越界异常处理!);实验结果:重新编译运行程序,对比运行结果。在catch后加入:finallySystem.out.println(不管怎样都要执行的语句!);除数为零的异常处理结果:实验过程或步骤:1. 首先是编写一个错误程序,这个程序是存在异常的,可以看出,在第9行出现了数组下标越界的异常,导致了程序的中止,而程序的最后一条语句“System.out.println(haha.);”没有执行。2. 对错误程序进行改写和优化。用到trycatch语句,其作用是将一场进行合理处理;try后面是正常与性结果的,如果出现异常,则进入catch进行异常处理;3. 将达数相乘方法进行异常处理,就是在其后面加入异常处理语句trycatch,在结果大于1000进行异常处理,输出处理结果。实验心得:1. 首先是trycatch语句的巧妙运用,在有可能出现异常的程序段中插入异常处理机制,可以使得程序能够更流畅的运行;2. 在此后的程序中,可能程序的长度会越来越长,所以在eclipse中编写,并使用断电的插入能够使得程序分段实现,提高错误的排出效率。实验五实验名称:Java数据流实验目的和要求:一、实验目的:1. 掌握数据流的基本概念。2. 掌握多种读取/写入数据的方法。二、实验要求:编写一个含有读取/写入数据的Java应用程序。实验内容:1. 编写一个计算器,它从键盘中读取操作数和操作符,经过计算后,在屏幕上输出结果。2. 在记事本编辑如下源程序:import java.io.*;class Calculator public static void main(String args) Calculator cal=new Calculator();cal.Calculate();public double ReadDouble() / 从键盘读取一个Double数double re=0;DataInputStream in =new DataInputStream(System.in);tryString temp =in.readLine();re =Double.parseDouble(temp);catch (IOException e) System.out.println(Error in I/O: + e.getMessage(); return re;public void Calculate() / 计算byte cmd=q;dodouble op1,op2,re=0;byte op;System.out.print(请输入操作数1:);op1 =ReadDouble();System.out.print(请输入操作(+、-、*、/):);op =ReadByte();System.out.print(请输入操作数2:);op2 =ReadDouble();switch(op)case +:re =op1 +op2;break;case -:re =op1 -op2;break;case *:re =op1 *op2;break;case /:re =op1 /op2;break;default:System.out.println(操作符错误);continue;System.out.println(+op1+(char)op+op2+=+re);System.out.print(退出?(Q/q);cmd =ReadByte();while(cmd!=Q & cmd!=q);public byte ReadByte() / 读操作符byte cmd =new byte10;trySystem.in.read(cmd);catch (IOException e) System.out.println(Error in I/O: + e.getMessage(); return cmd0;3. 保存程序Calculator.java,编译程序,运行并测试程序。4. 试编写一个程序完成文件拷贝功能,即从文件A中读取数据,再写到文件A的拷贝文件B中。类定义代码如下:public static void copyFile(String fileFromPath, String fileToPath) try / 读取文件java.nio.channels.FileChannel srcChannel = new java.io.FileInputStream(fileFromPath).getChannel();java.nio.channels.FileChannel dstChannel = new java.io.FileOutputStream(fileToPath).getChannel();/ 进行文件复制dstChannel.transferFrom(srcChannel, 0, srcChannel.size();/ 运行复制结束,并且关闭 输入/输出管道流srcChannel.close();dstChannel.close(); catch (IOException e) e.printStackTrace();实验结果(由于源代码的api过时,使得程序不能正常运行,所以这个结果是在优化程序后的结果)实验过程或步骤:1. 就第一个实验而言,首先输入import java.io.*;来引用java.io这个包,io在这里就是数据流的意思;2. 定义类。定义一个Calculator类,及计算器。直接从mian函数开始,一下来定义具体的类;3. 定义一个ReadDouble类,及从键盘上读取一个Double数,如果输入符合要求,则写入,如果不符合,则输出Error in I/O: +输入数;4. 再定义一个Calculate类,就是程序的主要部分,计算部分。首先显示输入第一个是,然后写入,再输入运算符,再再输入第二个数,写入,根据不同的运算符采用switch来进行运算,最后定义读取操作符类,程序再从main函数开始,完成。实验心得:1, 首先,就实验本身而言,并没有很复杂的代码,但是在编译的过程中仍然会出现很多的问题,比如成员变量和参数的类型定义的时候容易出错,导致编译成乱码或者无法编译,这是值得注意的一点;2, 再者,java程序代码的特征而言,由于对于大小写的要求比较严格,而且与其他语言相同,可能在程序的大体框架上不会出现什么错误,但往往在最微小的地方出现错误,并且这些错误一般情况下不已排查,所以要巧妙的运用断点的作用,但更重要的是,要不断熟练编译代码,避免出现低级错误;3, 最后,回到本实验的第二个程序,是完成一个文件拷贝功能的程序设计,我们用到了数据流的概念,要注意层次关系。实验上机考试第一题:将字符串abcdefgh倒序输出public class ReverseSort public static String reverseSort(String str) String str2 = ;for (int i = str.length() - 1; i -1; i-) str2 += String.valueOf(str.charAt(i);return str2;public static void main(String args) String str = abcdefgh;String sortedStr = reverseSort(str);System.out.println(sortedStr);运行结果:考试心得:程序代码主要用到了for循环,应用比较简单,在此问题中我们也可以使用while循环和do-while循环,但是使用for循环的好处是可以简化编译代码,而且不必为在末尾忘记while而犯错,但是for循环不能像do-循环那样能够给程序循环过程再加一次循环,也就是说,对于程序过程的控制性没有do-while强。第二题:编写java程

温馨提示

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

评论

0/150

提交评论