文档库 最新最全的文档下载
当前位置:文档库 › java实验报告册

java实验报告册

河南工程学院

计算机学院

Java程序设计实验报告册

学期:

课程:

专业:

班级:

学号:

姓名:

指导教师:

前言

一、上机实验目的

上机实验的目的是提高学生的分析问题、解决问题的能力和动手能力,通过实践环节理解Java语言的基本结构和程序设计方法。通过亲手编程掌握Java 语言编程的方法。

二、实验基本内容

为了使学生在上机实验时目标明确,本实验指导书针对课程内容编写了12个实验。学生可以在课内机时先完成指导书中给出的程序,理解所学的知识,在此基础上再编写其他应用程序。指导书中的12个实验如下:

Java编程环境下载、安装、配置与运行

数据类型、表达式和数组

Java流程控制

Java语言面向对象基础编程

类的继承性和多态性

包、接口与抽象类

异常处理

Java的常用系统类编程

图形用户界面(1)

图形用户界面(2)

线程

三、实验任务与时间安排

《Java程序设计》是一门实践性很强的课程,除了在课内安排的实验外,鼓励同学在课外用相关技术进行编程练习。《Java 语言》上机实验时间为12学时,与教学内容同时进行上机实验。

实验要求

一、可读性

一个好的程序要具备可读性,可方便自己也可方便别人。所以,要培养一个良好的编程习惯,可注意以下几方面:

1.代码的缩进;

2.有效使用空格;

3.简明的注释;

4.意义明确的命名;

5.着重表示的常量。

二、亲手编写源程序

在编写Java 程序过程中,还可以利用一些可视化的开发工具,它们可以综合使用Java 的编译器和调试器等,例如Symantec 公司的Visual Café、Kawa、Sun 公司的Java Worshop 和Java Studio、Inprise 公司的JBuilder、微软的Visual J++等,使用编程开发工具可以加快编程的速度。但在初始学习时还是最好亲手编写源程序,以便理解类和编程思想。

三、立即运行程序

编写的源程序要立即上机编译运行来检验程序中存在的问题。通过运行的结果验证程序的功能是否实现。有一些系统类的方法、变量也需要上机实验去了解它们的含义。

Java 还有很多相关的技术,JavaScript 是具有Java 子集的脚本语言,可用于编写ASP 文件;JSP是比ASP 更优越的Web 动态开发技术,以Java 作为脚本语言,通过JDBC 能够利用SQL 与数据库进行通信,使Java 得到更大范围的应用,如企业信息系统开发,电子商务网站开发。Java 在2D 图形、3D动画、移动电话方面也有很好的应用,学习Java 才是刚刚开始。

目录

实验一 Java编程环境下载、安装、配置与运行 (1)

实验二数据类型、表达式 (7)

实验三数组 (9)

实验四 Java流程控制 (10)

实验五Java语言面向对象基础编程 (13)

实验六类的继承性和多态性 (17)

实验七包、接口抽象类 (22)

实验八异常处理 (28)

实验九Java常用系统类编程 (35)

实验十图形用户界面(1) (45)

实验十一图形用户界面(2) (50)

实验十二线程 (54)

实验一 Java编程环境下载、安装、配置与运行

【实验目的】

1.掌握下载java sdk软件包、EditPlus编辑软件的方法

2.掌握设置Java程序运行环境的方法

3.掌握编写与运行Java程序的方法

4.了解Java语言的概貌

5.为后续java程序的实验做准备

【实验要求】

1.JDK的下载与安装

2.设置环境变量

3.编译Java源程序

4.运行Java程序

5.使用EditPlus编译与运行程序

【实验内容】

一 JDK下载与安装

1.机器要求

Java对机器运行要求不高。下面给出的是基于Windows平台的机器要求。

硬件要求:CPU PⅣ,128M内存,1G硬盘空间即可

软件要求:Windows 2000/XP,IE6.0

2. 下载JDK

为了建立基于SDK的java运行环境,需要先下载sun的免费SDK软件包。SDK包含了一整套开发工具,其中包含对编程最有用的是Java编译器、Applet查看器和Java解释器。在浏览器中输入https://www.wendangku.net/doc/f014161151.html,进入sun公司官方网站页面。在页面右边“Popular Downloads”栏中可看到最新版的JDK软件包(JDK1.6),并下载。

3.安装SDK

运行下载的“jdk-5u1-windows-i586-p.exe”软件包,在安装过程中可以设置安装路径及选择组件,默认的组件选择是全部安装。

4.JDK中主要文件夹和文件

安装成功后,d:\java\jdk1.5中文件和子目录结构如图1所示。其中bin文件夹中包含编译器(javac.exe)、解释器(java.exe)、Applet查看器(appletviewer.exe)等可执行文件,lib文件夹中包含了所有的类库以便开发Java程序使用,sample文件夹包含开源代码程序实例,src压缩文件中包含类库开源代码。

图1

二.设置环境变量

JDK中的工具都是命令行工具,需要从命令行即MS-DOS提示符下运行它们。很多人可能会不习惯,但这是Sun特意采取的策略,为的是把精力更多投入到Java语言本身而不是

花在开发工具上。以Windows XP为例说明设置过程。

右击桌面“我的电脑”图标,选择“属性”菜单

图 2

在“高级”选项卡中单击“环境变量”按钮,将出现“环境变量”设置界面

图 3

在“系统变量”框中点击“新建”按钮,在出现的“编辑系统变量”对话框中,在“变量名”栏的文本框内输入“JavaHome”,在变量值栏的文本框内输入“d:\java\jdk1.5”(即jdk安装的主目录)

图 4

在“系统变量”框中选择“path”,然后单击“编辑”按钮,在出现的“编辑系统变量”对话框中,在“变量值”栏的命令后添加“;%JavaHome%\bin”。

图 5

在“系统变量”框中,单击“新建”按钮,在出现的“新建系统变量”的对话框中,在“变量名”栏中输入“classpath”,在变量值栏输入“.;%JavaHome%\lib”。其中“.”表示当前目录。

图 6

设置完成后,单击“开始”->“所有程序”->“附件”->“命令提示符”打开DOS 窗口,在命令行提示符输入“java”或“javac”回车后,如果出现其用法参数提示信息,则安装正确。

图 7

三.使用EditPlus

要编写Java 程序,需要有文本编辑器。可以使用操作系统提供的Edit 或记事本作为编辑器,最好选择EditPlus 编辑软件,它可以使用不同颜色显示Java 的关键字和类名,简单好用,同时可以对程序进行编译和运行。

1.下载并安装EditPlus编辑软件 EditPlus编辑软件的安装方法很简单,安装软件提示要求去做即可。

2.编写在屏幕上显示文字“欢迎你学习Java 语言!”的文件(Hello.java)。打开EditPlus 编辑软件,如图8所示,在其右边文本区输入如下代码。

图 8

3.将文件命名为Hello.java,保存为文本文件格式文件,注意保存文件的路径。根据前面环境变量的设置,Hello.java应该保存在“e:\java\程序>”的路径下。

四. 编译Java 源程序

Java源程序编写后,要使用Java编译器(javac.exe)进行编译,将Java源程序编译成可执行的程序代码。Java源程序都是扩展名为 .java的文本文件。编译时首先读入Java 源

程序,然后进行语法检查,如果出现问题就终止编译。语法检查通过后,生成可执行程序代码即字节码,字节码文件名和源文件名相同,扩展名为 .class。

1.打开命令提示符窗口(MS-DOS窗口)进入Java源程序所在路径。

2.键入编译器文件名和要谝译的源程序文件名,如图 9所示。

javac Hello.java

3.按回车键开始编译(注意:文件名H要大写,否则运行会出问题)。

如果源程序没有错误,则屏幕上没有输出,键入“dir”按回车键后可在目录中看到生成了一个同名字的.class文件“Hello. class”,如图 9 所示。否则,将显示出错信息。

图 9

五. 运行Java 程序

使用Java解释器(java.exe)可将编译后的字节码文件Hello.class解释为本地计算机代码。

在命令提示符窗口或MS-DOS窗口键入解释器文件名和要解释的字节码文件名java Hello,按回车键即开始解释并可看到运行结果,如果看到如图10所示结果,表明程序运行成功了,这是一种字符方式的应用程序其结果显示在屏幕。

图 10

六. 使用EditPlus 编译与运行程序

1.打开EditPlus编辑软件,单击“工具”→“配置用户工具”菜单,如图11所示。

图11

2.在打开的“参数设置”窗口如图12、图13所示配置编译与运行环境。

(1)设置“编译”工具

单击“组名称”按钮确定工具组的名称。单击“添加工具”按钮,从弹出的快捷菜单中选择“程序文件”命令。在“菜单文字”栏中输入“编译”文字;在“命令”栏中输入或通过文件夹选择javac.exe文件的路径;在“参数”栏选择“文件名称”;在“初始目录”栏输入Java程序所在的路径。

(2)设置“运行”工具,同样的方法可以设置“运行”工具。请同学自己练习。

图12

图13

3.编译与运行设置工具后,在“工具”菜单下的下拉菜单中就可以对Java程序

进行编译与运行操作了。

(1)单击“工具”→“编译”菜单,如图14所示。就开始对选中的程序进行编译处理。该过程要等一会儿。

图14

(2)编译通过后,可在右下方窗口看到编译结果,如图15所示。如果程序有问题,会看到提示。

图15

(3)编译成功后,可运行该程序。单击“工具”→“运行”菜单,如图16所示。

图16

(4)运行成功后,可在右下方窗口看到程序的运行结果,如图17所示。

图17

七. 浏览Applet 程序

在下载的\j2sdk1.4.2_01\demo\applets\Clock文件夹中用浏览器打开网页文件example1.html,就可以看到一个嵌入到Web页面的Applet开始运行,一个模拟时钟出现在网页上,如图18所示,显示出系统当前时间。

图18

【完成实验项目】

1.编写Java应用程序,输出两行字符串:“Java很有趣。”和“努力学习Java编程。”

程序清单

public class A

{

public static void main(String args[])

{

Systerm.out.println("java很有趣。")

Systerm.out.println("努力学习java编程。")

}

}

实验二数据类型、表达式

【实验目的】

1. 掌握java基本数据类型、变量及其应用。

2. 掌握运算符的优先级

3. 掌握运算符与表达式

【实验要求】

1. 编写程序使用不同的数据类型变量

2. 编写程序使用不同的运算符

3. 编写一个创建数组和使用数组应用程序。

【实验内容】

一.声明不同数据类型的变量

1.为每种基本类型定义了一个变量,并为其赋值

public class Demo2_1 {

public static void main(String args[]) {

byte b=0x55;

short s=0x55ff;

int i=1000000;

long l=0xffffL;

char c='a';

float f=0.23F;

double d=0.7E-3;

boolean B=true;

String S="这是字符串类数据类型";

System.out.println("字节型变量b = "+b);

System.out.println("短整型变量s = "+s);

System.out.println(" 整型变量i = "+i);

System.out.println("长整型变量l = "+l);

System.out.println("字符型变量c = "+c);

System.out.println("浮点型变量f = "+f);

System.out.println("双精度变量d = "+d);

System.out.println("布尔型变量B = "+B);

System.out.println("字符串类对象S = "+S);

}

}

二.使用运算符和表达式

1.建立使用关系运算符和逻辑运算符的程序文件,源代码如下。

class Demo2_2 {

public static void main(String args[]) {

int a=25, b=20, e=3, f=0;

boolean d=a

System.out.println("a=25,b=20,e=3,f=0");

System.out.println("因为关系表达式a

if (e!=0 && a/e>5)

System.out.println("因为e 非0 且a/e 为8 大于5,所以输出a/e="+a/e);

if (f!=0 && a/f>5)

System.out.println("a/f = "+a/f);

else System.out.println("因为f值为0,所以输出f = "+f);}

}

【完成实验项目】

1.编写程序完成,将168转换成861,并将其结果输出到屏幕上

程序清单

blic class HelloWorldApp

{

public static void main(String[] args)

{

String str="168";

for(int i=str.length()-1;i>=0;i--)

{

System.out.print(str.charAt(i));

}

}

}

实验三数组

【实验目的】

1. 掌握数组的定义和使用方法

【实验要求】

1. 编写一个创建数组和使用数组应用程序。

【实验内容】

一.数组的练习

1.求二维数组中各行元素之和并查找其值最大的那个行

public class TableTester {

public static void main(String args[]) {

int myTable[][] = {

{23, 45, 65, 34, 21, 67, 78},

{46, 14, 18, 46, 98, 63, 88},

{98, 81, 64, 90, 21, 14, 23},

{54, 43, 55, 76, 22, 43, 33}};

int sum, max, maxRow=0;

max = 0; //Assume all numbers are positive

for (int row=0; row<4; row++) {

sum = 0;

for (int col=0; col<7; col++)

sum += myTable[row][col];

if (sum > max) {

max = sum;

maxRow = row;

}

}

System.out.println("Row " + maxRow + " has the highest sum of " + max);

}

}

【完成实验项目】

1.给定一组整型数组,求它们的平均值及最大值,最小值

程序清单

public class Array

{

public static void main(String args[])

{

int myArray[]={23, 45, 65, 34, 21, 67, 78};

int sum=0,max,min;

double average;

max = myArray[0];

min = myArray[0];

for (int i=0; i<7; i++)

{

sum += myArray[i];

max=myArray[0];

if (myArray[i] > max)

{

max =myArray[i];

}

if (myArray[i] < min)

{

min =myArray[i];

}

}

average=sum/7;

System.out.println("average="+ average +" max=" + max + " min=" + min);

}

}

实验四 Java流程控制

【实验目的】

1. 理解Java程序语法结构

2. 掌握顺序结构、选择结构和循环结构语法的程序设计方法

【实验要求】

1. 编写使用不同选择结构的程序

2. 编写使用不同循环结构的程序

【实验内容】

一.使用选择语句

1.使用if...else 语句

(1)程序功能:使用if...else 语句构造多分支,判断某一年是否为闰年。闰年的条件是符合下面二者之一:能被4 整除,但不能被100 整除;能被400 整除。

(2)编写源程序文件,代码如下。

public class Demo3_1 {

public static void main(String args[]) {

boolean leap;

int year=2005;

if ((year%4==0 && year%100!=0) || (year%400==0)) // 方法1

System.out.println(year+" 年是闰年");

else

System.out.println(year+" 年不是闰年");

}

}

2.使用switch 语句

(1)程序功能:在不同温度时显示不同的解释说明。

(2)程序源代码如下。

class Demo2_7{

public static void main(String args[]) {

int c=38;

switch (c<10?1:c<25?2:c<35?3:4) {

case 1:

System.out.println(" "+c+"℃有点冷。要多穿衣服。");

case 2:

System.out.println(" "+c+"℃正合适。出去玩吧。");

case 3:

System.out.println(" "+c+"℃有点热。");

default:

System.out.println(" "+c+"℃太热了!开空调。");

}

}

}

二.使用循环语句

1. for 循环语句练习

(1)程序功能:求1至100之间所有的整数求和。

(2)程序源代码如下。

public class Sum{

public static void main(String []args){

int sum=0;

for(int i=1;i<=100;i++)

sum=sum+i;

System.out.println(sum);

//i 不再有效

}

}

2. while 循环语句练习

(1)程序功能:已知()123

=++++,问k最小为什么值时能够使得

s u m k k

sum k>?

()2000

(2)程序源代码如下。

public class FindMinimalK{

public static void main(String []args){

int sum=1;

int k=1;

while(sum<=2000){

k++;

sum=sum+k;

}

System.out.println("the minimal k="+k);

}

}

3.do…while 循环语句练习

(1)程序功能:求1+2+…+100 之和,并将求和表达式与所求的和显示出来。

(2)程序源代码如下。

class Demo2_10 {

public static void main(String args[]) {

int n=1, sum=0;

do {

sum+=n++;

}while (n<=100);

System.out.println("1+2+...+100 ="+sum);

}

}

【完成实验项目】

1.使用for循环和do循环两种方法求解0至100之间所有偶数的和

程序清单

public class Sum

{

public static void main(String args[])

{

int i=0;

int sum=0;

for(i=0;i<100;i+=2)

{

sum +=i;

}

System.out.println("0-100之间所有偶数之和为:"+sum);

}

}

class Sum_do

{

public static void main(String args[])

{

int i=1, sum=0;

do

{

sum+=i;

i+=2

}while (i<=100);

System.out.println("0-100之间所有偶数之和为:"+sum);

}

}

实验五Java语言面向对象基础编程

【实验目的】

1. 理解Java语言是如何体现面向对象编程基本思想,

2. 了解类的封装方法,以及如何创建类和对象,

3. 了解成员变量和成员方法的特性。

【实验要求】

1. 编写一个体现面向对象思想的程序。

2. 编写一个创建对象和使用对象的方法程序。

3. 编写不同成员变量修饰方法的程序。

【实验内容】

一创建对象

new 构造函数(构造方法参数列表)

二使用修饰符

常用的修饰符如下。[public] [private] [protected] [package] [static] [final] [transient] [volatile]不同修饰符的访问控制权限如表5.1 所示。

表5.1

修饰符类子类包所有类和包

Public Private √

√√√

Protected Package √

√√

1.程序功能:通过两个类StaticDemo、LX3_1 说明静态变量/方法与实例变量/方法的区别。

2.编写类文件LX3_1.java,程序源代码如下。

class StaticDemo {

static int x;

int y;

public static int getX() {

return x;

}

public static void setX(int newX) {

x = newX;

}

public int getY() {

return y;

}

public void setY(int newY) {

y = newY;

}

}

public class LX3_1 {

public static void main(String[] args) {

System.out.println("静态变量x="+StaticDemo.getX());

System.out.println("实例变量y="+StaticDemo.getY()); //非法,编译时将出错

StaticDemo a= new StaticDemo();

StaticDemo b= new StaticDemo();

a.setX(1);

a.setY(2);

b.setX(3);

b.setY(4);

System.out.println("静态变量a.x="+a.getX());

System.out.println("实例变量a.y="+a.getY());

System.out.println("静态变量b.x="+b.getX());

System.out.println("实例变量b.y="+b.getY());

}

}

3.对上面的源程序进行编译,会出现如图1所示的出错提示。

图1

4.将源程序中的出错语句删除或使用解释符//隐藏起来,例如,

//System.out.println("实例变量y="+StaticDemo.getY());

5.重新编译并运行该程序,结果如图2所示。

图2

static 声明的成员变量/方法被视为类的成员变量/方法,而不把它当作实例对象的成员变量/方法。换句话说,静态变量/方法是类固有的,可以直接引用,其它成员变量/方法仅仅被声明,生成实例对象后才存在,才可以被引用。基于这样的事实,也把静态变量/方法称为类变量/方法,非静态变量称为实例变量/方法。

从实验结果可以得出以下几点结论:

·类的静态变量可以直接引用,而非静态变量则不行。类的静态变量相当于某些程序语

言的全局变量。

·静态方法只能使用静态变量,不能使用实例变量。因为对象实例化之前,实例变量不可用。

·类的静态变量只有一个版本,所有实例对象引用的都是同一个版本。

·对象实例化后,每个实例变量都被制作了一个副本,它们之间互不影响。

三方法中参数传递的练习

在其它语言中,函数调用或过程调用时参数有传值调用和传地址调用之分。在Java 中,方法中的参数传递可以分为传值调用或对象方法调用等方式。传值调用即传递的参数是基本数据类型,调用方法时在方法中将不能改变参数的值,这意味着只能使用它们。对象调用是指先调用对象,再调用对象的方法,这种方式可以修改允许存取的成员变量。所以,如果不想改变参数的值,可以采用传值调用的方法。如果想改变参数的值,可采用对象调用的方法,间接修改参数的值。

1.编写一个传值调用的程序文件LX3_

2.java。

(1)程序功能:程序首先给整型变量x 和y 赋一个初值10,然后使用传值调用方式调用方法ff1对x 和y 做乘方及输出x 和y 的乘方值,最后再输出x 和y 的乘方值。

(2)程序源代码如下。

class LX3_2 {

public static void main(String[] args) {

int x=10, y=10;

ff1(x, y);

System.out.println("x="+x+", y="+y);

}

static void ff1(int passX, int passY) {

passX=passX*passX;

passY=passY*passY;

System.out.println("passX="+passX+", passY="+passY);

}

}

(3)编译LX3_2.java,其运行结果如图3 所示。

图3

(4)分析其运行结果

这个程序没有实现预期的结果,原因是ff1 方法采用了传值调用。调用ff1 方法时,将产生两个参数passX 和passY,x 和y 的值被传递给这两个参数。尽管在方法中计算了参数的平方,但从ff1方法返回后,参数消失,此时x 和y 的值仍是初值。

2.编写一个调用对象方法的程序文件LX3_3.java。

(1)程序功能:通过调用对象的方法在方法调用后修改了成员变量的值。

(2)LX3_3.java 程序源代码如下。

class LX3_3 {

public static void main(String[] args) {

Power p=new Power();

p.ff2(10,10);

System.out.println("方法调用后x="+p.x+", y="+p.y);

}

}

class Power{

int x=10, y=10;

void ff2(int passX, int passY) {

System.out.println("初始时x="+x+", y="+y);

x=passX*passX;

y=passY*passY;

System.out.println("方法调用中x="+x+", y="+y);

}

}

(3)编译LX3_3.java,其运行结果如图4所示。

图4

【完成实验项目】

1.定义一个名为MyRectangle的矩形类,类中有4个私有的整型域,分别是矩形的左上角坐标(xUp,yUp)和右下角坐标(xDown,yDown);类中定义没有参数的构造方法和有4个int参数的构造方法,用来初始化类对象。类中还有以下方法: getW( )——计算矩形的宽度;getH( )——计算矩形的高度;area( )——计算矩形的面积;toString( )——把矩形的宽、高和面积等信息作为为字符串返回。编写应用程序使用MyRectangle类。

程序清单

class Rectangle

{

private int xUp,yUp,xDown,yDown;

public Rectangle()

{}

public Rectangle(int xUp,int yUp,int xDown,int yDown)

{

this.xUp=xUp;

this.yUp=yUp;

this.xDown=xDown;

this.yDown=yDown;

}

public int getW()

{

return (yDown-yUp);

}

public int getH()

{

return (xDown-xUp);

}

相关文档