Java实验报告项目一二三.docx

上传人:b****2 文档编号:498421 上传时间:2023-04-29 格式:DOCX 页数:74 大小:4.24MB
下载 相关 举报
Java实验报告项目一二三.docx_第1页
第1页 / 共74页
Java实验报告项目一二三.docx_第2页
第2页 / 共74页
Java实验报告项目一二三.docx_第3页
第3页 / 共74页
Java实验报告项目一二三.docx_第4页
第4页 / 共74页
Java实验报告项目一二三.docx_第5页
第5页 / 共74页
Java实验报告项目一二三.docx_第6页
第6页 / 共74页
Java实验报告项目一二三.docx_第7页
第7页 / 共74页
Java实验报告项目一二三.docx_第8页
第8页 / 共74页
Java实验报告项目一二三.docx_第9页
第9页 / 共74页
Java实验报告项目一二三.docx_第10页
第10页 / 共74页
Java实验报告项目一二三.docx_第11页
第11页 / 共74页
Java实验报告项目一二三.docx_第12页
第12页 / 共74页
Java实验报告项目一二三.docx_第13页
第13页 / 共74页
Java实验报告项目一二三.docx_第14页
第14页 / 共74页
Java实验报告项目一二三.docx_第15页
第15页 / 共74页
Java实验报告项目一二三.docx_第16页
第16页 / 共74页
Java实验报告项目一二三.docx_第17页
第17页 / 共74页
Java实验报告项目一二三.docx_第18页
第18页 / 共74页
Java实验报告项目一二三.docx_第19页
第19页 / 共74页
Java实验报告项目一二三.docx_第20页
第20页 / 共74页
亲,该文档总共74页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Java实验报告项目一二三.docx

《Java实验报告项目一二三.docx》由会员分享,可在线阅读,更多相关《Java实验报告项目一二三.docx(74页珍藏版)》请在冰点文库上搜索。

Java实验报告项目一二三.docx

Java实验报告项目一二三

Java实验报告

项目一Java语言基础

一、实验学习目标

1.熟悉Java开发环境

2.了解和掌握Java的基本数据类型和基本运算

3.掌握Java语言的条件控制语句,循环语句以及转向语句。

4.理解和掌握数组的基本内容(包括数组声明,初始化,复制等)。

5.掌握多维数组的定义和使用。

二、实验设备

PC

三、实验内容

1.配置JDK运行路径并编译运行第一个Java应用程序。

2.通过求最大值,算术运算,位移运算等小程序体会Java的基本数据类型和基本运算。

3.通过成绩等级判定,九九乘法表等小程序体会Java语言的条件控制语句,循环语句以及转向语句。

4.编写程序实现通过键盘输入10个数字并对这些数字进行排序,然后以从小到大的顺序输出。

5.编写程序实现两个矩阵相乘。

四、实验原理

JDK(JavaDevelopmentToolkit)是Sun公司开发的Java开发工具包,它是一个简单的命令行工具,主要包括软件库、编译Java源代码的编译器、运行Java字节码的解释器,以及测试JavaApplet的Applet阅读器,还有其他一些有用的工具。

JDK主要是通过DOS命令行,在DOS环境下进行Java程序的编译和运行。

常用的JDK工具包括javac、java、javadoc、appletviewer、jar、jdb、javah、javap、extcheck命令。

要了解它们的具体语法描述,可以在设置好JDK路径后,在DOS环境下直接输入相关“工具名称”按回车,就能够看到每种工具的具体使用语法。

五、实验步骤

1.安装好JDK5.0后,如果想在系统的任意目录下编译和运行编写好的Java程序,需要先设置环境变量。

本实验将在Windows系统下的环境变量中设置JDK运行路径(以使用安装程序的默认路径:

C:

\ProgramFiles\Java\jdk1.5.0_06为例)。

(1)鼠标右键单击“我的电脑”,选择“属性”,在弹出对话框中选择“高级”下的“环境变量”,如图1.1所示。

(2)在“系统变量”中选择Path,单击“编辑”按钮,如图1.2所示,在弹出对话框中的“变量值”文本框中添加;C:

\ProgramFiles\Java\jdk1.5.0_06\bin(如果前一个变量值后已有“;”则将路径信息加入即可),单击“确定”按钮,如图1.3所示。

图1.1

图1.2

图1.3

(3)在“环境变量”对话框中单击“新建”按钮,如图1.4所示,在弹出对话框中的“变量名”后输入java_home,“变量值”后输入C:

\ProgramFiles\Java\jdk1.5.0_06,单击“确定”按钮,如图1.5所示。

图1.4

(4)在“环境变量”下单击“新建”按钮,在弹出对话框中的“变量名”后输入classpath,在“变量值”后输入C:

\ProgramFiles\Java\jdk1.5.0_06\lib\tools.jar;C:

\ProgramFiles\Java\jdk1.5.0_06\jre\lib\rt.jar;.;,单击“确定”按钮,如图1.6所示。

图1.5图1.6

至此环境变量设置完毕,可以通过在DOS环境下直接键入javac命令按回车来检查环境变量设置是否成功,如果设置成功则可看到如图1.7所示结果。

图1.7

在以后需要通过DOS命令直接编译和执行Java程序时,只需进入Java程序所在的存放目录,通过javac和Java命令编译和执行相应程序。

内容一:

设置好JDK5.0的路径后,使用任意文本编辑器编写第一个Java程序,程序源代码如图1.8所示。

将文件保存成以HelloWorld.java为文件名的文件。

使用DOS命令进入HelloWorld.java文件所存放的目录(如:

D:

\Example),使用javac命令编译该应用程序,通过编译后在该文件夹中会生成一个名为HelloWorld.class的class文件,该class文件包含程序的字节码(Java字节码中包含的是Java解释程序将要执行的指令码),使用Java命令执行该class文件

运行结果截图如下所示:

内容二:

阅读并分析程序Example1.java,程序源代码如图所示。

请写出分析的结果。

然后新建Example1.java文件,将程序输入并保存。

使用DOS命令进入其所存放的目录,编译运行该程序,看运行结果是否与之前的分析一致。

如果不一致,请分析出错的原因。

以上程序中结果1可看做:

(--i)+i+i=-3,此时i=0

结果2可看作:

i+(++i)=0+1=1,此时i=1

结果3可看作:

i=i+i+(i+4)=6

结果4可看作:

i=3+(3*2)%i=3+0=3

结果5可看作:

x=x+1.2*3+x=8.2

结果6可看作:

x=x%3+4*2+x=2.2+8+8.2=18.4

程序的运行结果如下:

所以程序正确。

内容三:

阅读如图所示程序。

新建CompareTwoNumbers1.java文件,输入程序,将程序中“代码1-4”处补充完整并保存。

使用DOS命令进入其所存放的目录,编译运行该程序。

通过键盘在控制台输入任意2个实数,将完整程序和运行结果截图写入实验报告。

补充后的程序为:

运行结果为:

实验小结:

一开始不知道代码到底应该填什么,试了很多次都没有成功,就像代码1,我开始确实不知道应改怎样实例化一个scanner对象,而且在代码四那也试了很多次。

这次实验让我不再只是认为代码就是数字什么的了。

内容四:

阅读如图所示程序。

新建BitMovement.java文件,输入程序,将程序中“代码1-4”处补充完整并保存。

使用DOS命令进入其所存放的目录,编译运行该程序。

通过键盘在控制台输入任意1个整数,分析运行结果并将完整程序和运行结果截图写入实验报告

补充后程序为:

运行结果为:

结果分析:

这个程序的主要目的是为了实验数的位移,<<5和>>3分别表示向左移5位和向右移3位,也即在原来的基础上分别乘以2的5次方和除以2的三次方,但是如果右移时溢出了则结果为0;结果中8*32即为256,8/8为1,而且因为4<8,所以会溢出,所以结果为0。

内容五:

阅读如图所示程序,该程序要求将10个学生的成绩按等级输出(如>=90:

A,89-90:

B等)。

新建ChineseGrade2.java文件,输入程序,将如图所示程序补充完整并保存。

使用DOS命令进入其所存放的目录,编译运行该程序。

通过键盘在控制台输入10个学生的成绩,并将完整程序和运行结果截图写入实验报告。

补充后程序为:

实验运行结果为:

实验小结:

一开始看到这个程序感觉挺简单的,因为以前这样程序做了很多,但是真正在运行的时候才知道不是想象的那么简单,这次的问题主要是出在返回值上,开始试了很多种方法,但是都不成功,刚突然看见在就就java中字符型用String而不是char。

内容六:

阅读如图所示程序,该程序要求输出一个九九乘法表。

新建MultiplyList1.java文件,输入程序,将如图所示程序补充完整并保存。

使用DOS命令进入其所存放的目录,编译运行该程序。

并将完整程序和运行结果截图写入实验报告。

若直接将程序补充:

运行结果为:

若将output放到括号外:

运行结果为:

实验小结:

由上比较可以看出,第二种情况更加符合九九乘法表的要求,看起来也更加方便一点,这个主要是语句所放的位置的问题。

 

内容七:

阅读如图所示程序。

新建InsertSort.java文件,输入程序,将程序中“代码1-4”处补充完整并保存。

使用DOS命令进入其所存放的目录,编译运行该程序。

并将完整程序和运行结果截图写入实验报告。

补充后程序为:

运行后的结果为:

实验小结:

整体的来说这个程序相对还是比较简单,最大的问题就是在进行插序程序是没有注意数据类型,使得有的不兼容。

内容八:

阅读如图所示程序,该程序通过键盘输入两个矩阵(前提是作为乘数的矩阵的列数和作为被乘数的矩阵的行数相等),并将它们相乘的结果输出。

新建MatrixMultiply.java文件,输入程序,找出程序中的4处错误并说明错误原因。

使用DOS命令进入其所存放的目录,编译运行该程序。

并将完整程序和运行结果截图写入实验报告。

以上程序四处错误是:

1、

2、

3、

4、

修改后的程序为:

 

程序运行结果为:

 

实验小结:

这个程序很容易在数组初始化的时候加上多余的东西,从而使程序出错,这个程序一方面是早教我们如何编程,另一方面是在教我们尽量不要犯“未检查错误”,这种错误很让人吃亏。

 

项目二Java面向对象程序设计

一、实验学习目标

1.理解类的定义和对象的声明

2.理解掌握构造函数的使用

3.理解静态成员和实例成员的区别

4.理解掌握子类概念和方法覆盖的使用

5.理解掌握多态和动态绑定的含义与使用

二、实验设备

PC

三、实验原理

1.类(class)和对象(object)是面向对象方法的核心概念。

类是对一类事物描述,是抽象的、概念上的定义;对象是实际存在的该类事物的每个个体,因而也称实例(instance)。

2.在Java类中声明变量、方法和内部类时,可使用关键字static做为修饰符。

static标记的变量或方法由整个类(所有实例)共享,如访问控制权限允许,可不必创建该类对象而直接用类名加“.”调用。

static成员也称类成员或静态成员,如:

类属性、类方法、静态方法等。

3.Java语言中变量按被声明的位置划分为局部变量(方法或语句块内部定义的变量)个成员变量(方法外部、类的内部定义的变量)。

局部变量的作用域就是它所在的方法或语句块在程序调用方法(进入语句块)时,局部变量才被创建并可用,随方法(语句块)的退出。

成员变量在类的定义中声明,在创建对象的同时创建有关的成员变量。

成员变量依附于对象存在,具有与对象相同的生存期和作用域。

4.在方法覆盖(又名方法重写)的时候应注意:

在子类中可以根据需要对从父类中继承来的方法进行重写。

重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值类型。

重写方法不能使用比被重写方法更严格的访问权限。

5.多态性是指具有相同的方法接口,却有不同的实现。

在Java中超类往往定义一个通用的方法,而其不同的实现则由它不同的子类来完成。

当通过对象来调用这样一个方法时,Java会根据运行时该对象的实际类型来决定用方法的哪个版本来执行,即动态绑定。

四、实验内容

1.通过一个程序体会类的定义和对象的声明以及构造函数的使用。

2.通过一个程序体会静态成员和实例成员的区别

3.通过一个程序体会子类概念和方法覆盖的使用

4.通过一个程序体会多态和动态绑定的含义与使用

五、实验步骤

内容一:

(1)阅读如图2.1所示程序。

该程序实现了一个圆环类Ring,该类有3个属性,分别是内半径innerRadius,外半径outerRadius和颜色color,这些属性可以自行设置也可以得到其值,并且该程序还可以返回圆环的面积Area。

图2.1

(2)新建Ring.java文件,输入程序,将程序中“代码1-4”处补充完整并保存。

(3)使用DOS命令进入其所存放的目录,编译运行该程序。

并将完整程序和运行结果截图写入实验报告。

补充后程序为:

实验运行结果为:

实验小结:

就代码的补充而言,是很简单的,主要问题是出在getcolor上,其类型为String,很容易写成char。

 

内容二:

阅读如图2.2所示程序。

该程序实现了一个圆类Circle,该类有3个属性,分别是圆周率pi,半径radius和圆对象个数objectNo,其中圆周率和圆对象个数为static成员。

并且该程序还有两个static方法用来设置圆周率和显示当前圆对象个数。

图2.2

(2)新建Circle.java文件,输入程序并保存。

(3)使用DOS命令进入其所存放的目录,编译运行该程序。

分析观察运行结果并将运行结果截图写入实验报告。

(4)能否将程序中的cir1.setRadius(10)改为Circle.setRadius(10)?

为什么?

将圆周率pi的static修饰符去掉,会出现什么结果?

为什么?

将setPI(doublep)的static修饰符去掉呢?

圆对象个数objectNo为什么要设置为static,它的作用是什么?

将你的分析写入实验报告。

补充修改后程序为:

运行结果为:

实验分析和小结:

将程序中的cir1.setRadius(10)改为Circle.setRadius(10)的运行结果为

因为Circle.setRadius()不是静态方法,所以不能在static中调用。

将圆周率pi的static修饰符去掉的运行结果为

将setPI(doublep)的static修饰符去掉的运行结果为

圆对象个数objectNo设置为static是因为在main函数中要静态调用Circle(),其作用是为了方便调用,是程序编译运行时不出错。

开始的时候我是把程序保存为Circlr.java,但是不论怎么做都不能运行成功,但是后来把程序重命名为StaticTest.java就可以运行了,这是因为开始我没有注意main函数在哪一个类中。

内容三:

阅读如图2.3所示程序。

该程序实现了一个父类Telephone和其子类Mobilephone,该类有电话品牌,电话号码等属性,另外还有计算话费和显示信息等方法。

子类Mobilephone除了具有父类的属性外,还有网络类型,被叫时间等属性,另外它还有自己的计算话费和显示信息的方法。

图2.3

(2)新建Inheritance.java文件,输入程序,将程序中“代码1-5”处补充完整并保存。

(3)使用DOS命令进入其所存放的目录,编译运行该程序。

并将完整程序和运行结果截图写入实验报告。

(4)Mobilephone类的display()方法中的callCost()方法调用的是谁的方法?

如何调用父类的callCost()方法?

另外,将Mobilephone类的构造方法中的super(b,num)去掉,有什么结果?

为什么?

将你的分析写入实验报告。

补充后程序为:

运行结果为:

实验分析和小结:

Mobilephone类的display()方法中的callCost()方法调用的是Telephone类的方法,将Mobilephone类的构造方法中的super(b,num)去掉后运行结果为

因为在子类的构造方法中需要使用super(argument_list)语句调用父类的构造方法。

 

内容四:

阅读如图2.4所示程序。

该程序实现了三个类:

抽象父类Student(包括了一些学生的基本信息,如姓名,所学课程,课程成绩等)和其子类Undergraduate,Postgraduate。

两个子类之间的主要差别是计算课程成绩等级的标准有所不同。

图2.4

(2)新建Polymorphism.java文件,输入程序,将程序中“代码1-5”处补充完整并保存。

(3)使用DOS命令进入其所存放的目录,编译运行该程序。

并将完整程序和运行结果截图写入实验报告。

(4)能否在main()方法中添加语句Studentss1=newStudents("陈建平")?

为什么?

main()方法中的语句students[i].calculateGrade()都是调用哪些类的calculateGrade()方法?

将你的分析写入实验报告。

补充后程序为:

运行结果为:

实验分析和小结:

在main()方法中添加语句Studentss1=newStudents("陈建平")的运行结果为:

因为程序中没有Students()这个方法。

main()方法中的语句students[i].calculateGrade()调用的有Undergraduate和Postgraduate类的calculateGrade()方法,因为在五个学生中既有本科生又有研究生,所以两个类中的方法都有调用。

这个程序最容易出错的就是在初始化courseGrade为空串时和按课程索引号设置课程成绩,初始化空串时容易把null写成NULL,而在设置成绩时开始有点不知道如何写。

最后看到getCourseScore时就知道了,虽然不是很懂。

 

项目三Java高级编程

一、实验学习目标

1.了解掌握javax.swing包中的常用GUI组件

2.了解掌握事件处理机制

3.了解掌握5种常用的布局管理器

4.了解掌握javax.swing包中外观设置

5.了解掌握字节流和字符流概念及其使用

6.了解掌握ObjectInputStream,ObjectOutputStream的使用和对象序列化概念

7.掌握ZipOutputStream以及ZipIputStream的使用

二、实验设备

PC

三、实验内容

1.通过一个名片录入界面程序体会javax.swing包中的常用GUI组件和常用的布局管理器的使用。

2.通过一个文字字体设置程序体会javax.swing包中外观设置和事件处理机制。

3.通过在文件中对对象进行数据的读写的程序体会ObjectInputStream,ObjectOutputStream的使用和对象序列化概念。

4.通过压缩和解压两个小程序体会ZipOutputStream以及ZipIputStream的使用。

四、实验原理

1.AbstractWindowsToolkit(AWT)是最原始的JavaGUI工具包。

AWT的缺省实现使用了"对等"机制,即每一个JavaGUI窗口部件都在底层的窗口系统中有一个对应的组件。

例如,每一个java.awt.Button对象将在底层窗口系统中创建一个唯一对应的button。

当用户点击那个按钮的时候,事件将从本地实现库传送到Java虚拟机里,并且最终传送到与java.awt.Button对象相关联的逻辑。

对等系统的实现以及Java组件与对等组件之间的交流的实现都隐藏在底层JVM实现中,Java语言级的代码仍然跨平台。

AWT的主要优点是,它在Java技术的每个版本上都成为了一种标准配置,包括早期的Web浏览器中的Java实现。

另外它也非常稳定,这意味着我们不需要单独安装这个工具包,在任何一个Java运行环境中都可以使用它。

AWT是一个非常简单的具有有限GUI组件、布局管理器和事件的工具包。

因为Sun公司决定为AWT使用一种最小公分母(LCD)的方法(即AWT只拥有所有平台上都存在的组件的公有集合)。

因此它只会使用为所有Java主机环境定义的GUI组件。

最终的结果非常不幸,有些经常使用的组件,例如表、树、进度条等,都不支持。

对于需要更多组件类型的应用程序来说,需要从头开始创建这些组件,这是一个很大的负担。

2.JavaSwing是JavaFoundationClasses(JFC)的一部分,它是试图解决AWT缺点的一个尝试。

在Swing中,Sun开发了一个经过仔细设计的、灵活而强大的GUI工具包。

Swing是在AWT组件基础上构建的,所有Swing组件实际上也是AWT的一部分。

Swing使用了AWT的事件模型和支持类,例如Colors、Images和Graphics。

为了克服在不同主机上行为也会不同的缺点,Swing将对主机控件的依赖性降至了最低。

实际上,Swing只为诸如窗口和框架之类的顶层组件使用对等体。

大部分组件(JComponent及其子类)都是使用纯Java代码来模拟的。

这意味着Swing天生就可以在所有主机之间很好地进行移植。

因此,Swing通常看起来并不像是本地程序。

实际上,它有很多外观,有些模拟(尽管通常并不精确)不同主机的外观,有些则提供了独特的外观。

Swing对基于对等体的组件使用的术语是重量级(heavyweight),对于模拟的组件使用的术语是轻量级(lightweight)。

实际上,Swing可以支持在一个GUI中混合使用重量级组件和轻量级组件,例如在一个JContainer中混合使用AWT和Swing控件,但是如果组件产生了重叠,就必须注意绘制这些控件的顺序。

Swing无法充分利用硬件GUI加速器和专用主机GUI操作的优点。

结果是Swing应用程序可能比本地GUI的程序运行速度都慢。

Sun花费了大量的精力来改进Swing的性能,这种缺点正在变得日益微弱。

由于Swing的设计更加健壮,因此其代码基础也更坚实。

这意味着它可以在一台健壮的机器上比AWT运行得更好。

3.Java是通过数据流来实现数据的输入和输出的。

通过数据流,程序可以从外部获得数据信息,也可以将数据信息传送到外部。

在Java中,Reader和Writer是所有基于字符的数据流类的父类,它们可以处理16位的字符。

另外,InputStream和OutputStream是所有基于字节的数据流类的父类,它们处理8位的字节数据。

Java的对象序列化就是将对象的状态转换成字节流,以后可以通过这些字节信息再生成相同状态的对象。

对象序列化能使对象获得持续性,可以长久保存。

五、实验步骤

1.阅读分析如图3.2所示程序。

该程序实现了一个名片录入界面,当点击“取消”按钮时程序退出。

程序运行结果如图3.1所示。

图3.1

 

图3.2

(2)新建CardManager.java文件,输入程序,将程序中“代码1-7”处补充完整并保存。

(3)使用DOS命令进入其所存放的目录,编译运行该程序。

并将完整程序和运行结果截图写入实验报告。

(4)CardManager()方法中的ButtonGroup有什么用处?

如果改变程序窗口的大小,会发生什么情况?

为什么?

将你的分析写入实验报告。

(5)参考JavaAPI文档,将本程序修改为用GridBagLayout布局管理器管理组件,使得组件能随程序窗口的变化成比例变化。

将修改后的程序和运行结果截图写入实验报告。

 

补充后程序为:

 

运行结果为:

实验分析和小结:

CardManager()方法中的ButtonGroup是为创建按钮,及程序中的性别按钮,如果改变窗口的大小

运行结果为:

虽然窗口大小改变了,但是并没有设置要求各项也随着窗口的变化而拉伸,所以就只是窗口改变而已。

2.阅读分析如图3.4所示程序。

该程序可根据用户的选择对文字的字体,大小,颜色,风格等进行设置。

程序运行结果如图3.3所示。

图3.3

图3.4

(2)新建ArtFont.java文件,输入程序,将程序中“程序段1-4”处补充完整并保存。

(3)使用DOS命令进入其所存放的目录,编译运行该程序。

并将完整程序和运行结果截图写入实验报告。

(4)将程序中的语句colorBtn.addActionListener(this)改为如下形式:

colorBtn.addActionListener(newActionListener(){

if(e.getSource()==colorBtn){//改变颜色

colorStyle=J

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2