《Java语言程序设计实验指导书》实验指导书.docx
- 文档编号:23075163
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:34
- 大小:48.56KB
《Java语言程序设计实验指导书》实验指导书.docx
《《Java语言程序设计实验指导书》实验指导书.docx》由会员分享,可在线阅读,更多相关《《Java语言程序设计实验指导书》实验指导书.docx(34页珍藏版)》请在冰豆网上搜索。
《Java语言程序设计实验指导书》实验指导书
《Java语言程序设计实验指导书》实验指导书
高川翔
2012年2月
一、实验的地位、作用
Java语言程序设计实验作为课程实践性环节之一,是教学过程中必不可少的重要内容。
通过计算机实验和案例分析,使学生加深理解、验证巩固课堂教学内容;增强高级语言程序设计的感性认识;掌握程序设计的基本方法;培养学生理论与实践相结合的能力。
二、实验开设对象
本实验开设对象为《Java语言程序设计》课程的学习者(信息与计算科学专业本科生),实验为必修内容。
三、基本原理及课程简介
Java语言程序设计是必修基础课程。
本课程以BlueJ为工具,主要介绍面向对象的程序设计方法,Java面向对象程序设计语言和面向对象程序设计工具。
使学生掌握面向对象的思想方法,是后续专业课程的基础。
四、指导教师
原则上由Java语言程序设计讲授教师负责,由年轻教师担任主要的实验指导教师,实验室人员配合指导。
指导教师应在每次实验前讲清实验目的、基本原理、实验要求等,指导学生在规定的时间内完成相关课程实验。
五、实验设备配置
每人配置1台电脑,安装有JDK,以及BlueJ、Eclipse或者JBuilder。
六、考核与报告
1.实验后,学生将实验结果等内容写出实验报告,符合实验教学的要求,并得到指导教师的认可。
2.指导教师对每份实验报告进行审阅、评分。
3.该实验程依附于理论课,实验课的成绩记入课程平时成绩,占总成绩的25%
实验一 Java运行环境的安装、配置与运行
一、实验课时
3课时。
二、实验目的
1.掌握下载并安装JDK软件包的方法。
2.掌握在BlueJ环境下编写、编译与运行Java程序的方法。
3.了解Java语言的概貌。
4.了解设置环境变量,命令行编译java程序的方法。
三、实验内容和要求
内容:
1.安装JDK软件包和BlueJ开发环境并进行配置。
(1)配置JDK运行环境:
a)配置windows的path环境变量。
将安装的J2SDK(注意:
必须安装J2SDK)的bin文件夹的完整路径添加到path系统变量中,如图3-4所示。
图1-1path系统变量的配置
b)配置CLASSPATH系统变量。
如果系统变量中不存在classpath,则“新建”之。
将J2SDK的lib文件夹的完整路径写入。
如图3-5。
图1-2CLASSPATH系统变量的配置
(2)进入DOS虚拟环境;
(3)将实验1的程序保存在d:
\example文件夹下;
(4)使用javac命令编译程序;(如图3-6)
(5)使用java运行程序。
注意包中程序的编译与运行方法。
图1-3利用JDK环境编译运行Java应用程序
(以下实验前请仔细阅读BlueJ教程的电子文档)
2.在BlueJ环境下新建一个工程,在工程中编写一个简单的Java程序,在屏幕上输出”hello,java!
”。
publicclassHello
{
publicstaticvoidmain(Stringargs[])
{
"hello,java!
");
}
}
3.编译运行Java程序。
4.设置环境变量,在命令行下编译运行Java程序。
5.浏览运行JDK自带的Applet应用小程序。
6.在程序中设置断点、单步执行、查看变量值。
要求:
1、独立完成;并以实际上机操作计成绩;
2、所有上机实验必须在下一次实验之前完成,否则此次实验成绩算0分;
3、编写实验报告(按照报告模板编写,必须写出详细的实验步骤及必要的屏幕截图)。
实验二 创建一个Applet
一、实验课时
3课时。
二、实验目的
了解Applet与Application的区别,学会设计Applet程序。
三、实验内容和要求
已知JButton类有一个构造函数原形为:
publicJButton(Stringtext,Iconicon)。
其中参数text为显示在按钮上的文本、参数icon为显示在按钮上的图标。
下面的例子就是利用此构造函数产生一个带有文本、图标的按钮,并且当按一下按钮,图标就切换一次。
此图标切换是在两个图标中循环进行的。
程序如下:
import.*;
import.*;
importclassButtonExampleextendsJApplet{
intimageNum=1;
publicvoidinit(){
Containercon=getContentPane();
finalJButtonjb_ok=newJButton(″按我″,newImageIcon(″″));
(newFlowLayout());
(jb_ok);
(newActionListener(){
publicvoidactionPerformed(ActionEvente){
if(imageNum==1){
(newImageIcon(″″));
imageNum=2;
}
else{
(newImageIcon(″″));
imageNum=1;
}
}
});
}
}
此程序中还用到了JButton类的setIcon()方法,用以设置按钮的新的图标。
Html文件代码:
(文件名为)
将该文件与保存在同一个目录中,使用appletviewer命令就可以运行这个applet。
要求:
1、独立完成;并以实际上机操作计成绩;
2、所有上机实验必须在下一次实验之前完成,否则此次实验成绩算0分;
3、编写实验报告(按照报告模板编写,必须写出详细的实验步骤及必要的屏幕截图)。
实验三 数据类型及表达式
一、实验课时
3课时。
二、实验目的
1.掌握Java语言的基本数据类型,了解数据类型包装类的概念。
2.掌握变量和表达式的用法。
3.理解类型转换的概念。
三、实验内容和要求
1.输入并运行下面的程序,体会各种基本数据类型的变量的声明、初始化及使用。
publicclassBasicTypes{
publicstaticvoidmain(Stringargs[]){
byteb=0x88;
shorts=0200;
inti=111111;
longl=0x1;
charc='A';
floatf=.33f;
doubled=.00001001;
booleanbl=true;
b=″+b);
s=″+s);
i=″+i);
1=″+1);
c=″+c);
f=″+f);
d=″+d);
bl=″+bl);
}
}
思考:
(1)上述程序中定义了哪些变量每个变量的变量名、数据类型和作用域分别是什么
(2)查看程序的运行结果,分析为什么有些变量最后输出的结果和初始化时的不同
2.输入并运行下面的程序并分析结果,体会各种表达式的使用方法。
(1)publicclassArithmaticOp{
publicstaticvoidmain(Stringargs[]){
inta=5,b=3,c;
doubled=;
c=a/b+a%b;
d=c*b+a/b*d;
(2)publicclassArithmaticOp2{
publicstaticvoidmain(Stringargs[]){
inta,b,c;
a=b=c=5;
a=++b-++c;
a=b+++c++;
a=b――+c――;
(3)publicclassLogicOp{
publicstaticvoidmain(Stringargs[]){
booleanx,y;
x=5>3‖3*4<6&&!
(5<3);
y=2==6&&9>8+4||5+6<7+4&&!
x;
思考:
(1)上述程序中用到了哪些运算符运算符的优先级如何
(2)增一和减一运算符(++和--)放在变量和放在变量之后,其用法有何不同
(3)将你分析程序得到的结果与实际的运行结果相比较,如果有不同,原因在哪里
3.输入并运行下面的程序,分析结果,了解并掌握自动类型转换用法。
publicclassPromotion{
publicstaticvoidmain(Stringargs[]){
byteb=10;
charc=′a′;
inti=90;
longl=5551;
floatf=3.5f;
doubled=;
floatf1=f*b;″);
}else{
character″+aChar+″islowercase.″);
}
valueofaBooleanis″+aBoolean);
}
}
(1)修改上面的程序,让它能输出每种整型数据类型能表示的最小值。
(提示:
Byte类型的最小值属性是MIN_VALUE)
(2)Character类有另一个方法booleanisLowerCase(charch),可以来判断一个字符是否为小写。
修改适当的语句,使程序完成相同的功能。
(3)修改上面的程序,使布尔型变量aBoolean具有一个不同的值。
要求:
1、独立完成;并以实际上机操作计成绩;
2、所有上机实验必须在下一次实验之前完成,否则此次实验成绩算0分;
3、编写实验报告(按照报告模板编写,必须写出详细的实验步骤及必要的屏幕截图)。
实验四 控制流程
一、实验课时
3课时。
二、实验目的
1.充分掌握流程控制语句的格式和功能。
2.熟练运用流程控制语句进行程序设计。
3.学会进行简单的程序调试。
三、实验内容和要求
1.输入并运行下面两个程序:
(1)publicclassWhileDemo2{
publicstaticvoidmain(String[]args){
inti=100;
while(i<100{
i++;
}
}
}
(2)publicclassDoWhileDemo2{
publicstaticvoidmain(String[]args){
inti=100;
do{
i++
}while(i<100);
}
}
思考:
运行上面两个程序,比较While和DoWhile语句的执行过程有何不同。
2.输入并运行下面的程序:
publicclasslxsum{
publicstaticvoidmain(String[]args){
inti=1,sum;
sum=0;
while(i<=100){
sum+=i;
i++
}
}
}
思考:
(1)循环一般适用于什么情况
(2)请用for循环和do-while循环为实现上面的程序的功能。
3.输入并运行下面的程序,体会switch语句的使用。
publicclasslxswitch{
publicstaticvoidmain(String[]args){
intx=1,y=2,i=0,j=0;
switch(x){
case1:
switch(y){
case1:
i++;break;
case2:
j++;break;
default:
i++;
j++;
}
case2:
i++;j++;break;
default:
i++;j++;
}
思考:
(1)将你分析程序得到的结果与实际的运行结果相比较,看看有没有什么不同。
如果有不同,原因在哪里
(2)break语句在switch语句中起到了什么作用
4.输入并运行下面的程序,判断某一年是否是闰年。
闰年的条件是符合下面二者之一:
(1)能被4整除,但不能被100整除;
(2)能被4整除,又能被400整除。
publicclassJudgeLeapYear{
publicstaicvoidmain(Stringargs[]){
java,屏幕上会出现如下错误信息:
:
5:
Undefinedvariable:
i
for(i=1;i<5;i++);
:
5:
Undefinedvariable:
i
for(i=1;i<5;i++);
:
5:
Undefinedvarable:
i
for(i=1;i<5;i++)
:
7:
Undefinedvariable:
i
可以看到,Java中的错误信息包含如下内容:
(1)源程序文件名;
(2)出错那一行的行号;
(3)出错的类型;
(4)出错那一行的内容。
根据系统给出的错误信息,可以进行相应的修改。
如上面的几个错误,类型都是"Undefinedvariable:
i",也就是说,变量i尚未定义。
于是就可以分析出出错的原因是程序中没有声明变量i就直接使用了它,就是一个语法错误,在源程序中进行相应的修改。
修改过的程序内容如下:
publicclassHello{
publicstaticvoidmain(String[]args){
inti;ut.println(″time″+i+″:
Hello!
″)
}
}
}
对上面的程序再进行编译,顺利通过(屏幕没有出现任何信息)后生成相应的.class文件。
运行该文件,结果为:
time5:
Hello!
只输出了一次"Hello!
"与题目的要求(输出5次"Hello!
")不符,这是一个逻辑错误。
分析结果,发现它只执行了i为5的那一次输出。
再次检查程序,发现在for语句的圆括号后面多了一个分号,造成了for语句的循环体实际为空语句。
从源程序中将";"去掉,重新存盘、编译、运行。
结果如下:
time1:
Hello!
time2:
Hello!
time3:
Hello!
time4:
Hello!
发现还少输出一次"Hello!
",将循环变量的结束条件为"i<6",重新存盘、编译,运行正确。
思考:
(1)变量i在程序中起到什么作用
(2)如果将i的初值改设为0,那么应如何改写终止循环的条件
(3)如果将i的初值改设为3,那么应如何改写终止循环的条件
要求:
1、独立完成;并以实际上机操作计成绩;
2、所有上机实验必须在下一次实验之前完成,否则此次实验成绩算0分;
3、编写实验报告(按照报告模板编写,必须写出详细的实验步骤及必要的屏幕截图)。
实验五 数组
一、实验课时
3课时。
二、实验目的
1.掌握Java中数组的声明、创建、初始化和使用。
2.了解Java中提供的对数组排序的常用方法。
3.了解在数组中查找一个特定的值的常用方法。
三、实验内容和要求
1.数组元素的排序是一个经常会遇到的问题,冒泡(起泡)排序法(bubblesort)是一种常用的排序方法。
它的基本思想是:
对一个具有n个元素的数组,首先将第一个元素的值和第二个元素的值进行比较,若为逆序(即第一个元素的值大于第二个元素的值),则将两个元素交换之,然后比较第二个元素和第三个元素的值,依次类推,直到第n-1个元素和第n个元素进行比较、交换为止。
如此经过一趟排序,使得值最大元素被安置到最后一个元素的位置上。
然后,对前n-1个元素进行同样的操作,则具有次大值的元素被安置在第n-1个元素的位置上。
重复以上过程直到没有元素需要交换为止。
此过程可图示如下:
初始数组元素:
[49386597761327]
第1趟排序之后:
[384965761327]97
第2趟排序之后:
[3849651327]7697
第3趟排序之后:
[38491327]657697
第4趟排序之后:
[381327]49657697
第5趟排序之后:
[1327]3849657697
第6趟排序之后:
13273849657697
在此过程中,值小的数组元素好比水中气泡逐趟向上飘浮,而值大的数组元素好比石块沉入水底。
下面的代码是冒泡排序法的程序实现,请输入并运行之:
publicclassBubbleSort{
publicstaticvoidmain(Stringargs[]){
inti,j;
intintArray[]={30,1,-9,70,25};
int1=intArray.length;
for(i=1;i<1;i++)
for(j=0;j<1-i-1;j++)
if(intArray[j]>intArray[j+1]){
intt=intArray[i];
intArray[j]=intArray[j+1];
intArray[j+1]=t;
}
for(i=0;i<1;i++)
;
}
}
思考:
(1)什么情况下使用数组比较合理
(2)为什么要用双重循环来实现此算法循环变量i和j是如何来确定范围的
(3)如何来交换两个数组元素的值
2.试着修改上面的程序,改为对一维数组中的元素按值从大到小进行排序,并输出最终结果。
3.我们经常需要在数组中查找一个特定的值。
对于已排好序的数组来说,二分查找法(折半查找法)是一种比较快捷的方法。
二分查找法的基本思路是:
先将整个数组作为查找区间,用给定的值与查找区间的中间元素的值相比较,若相等,则查找成功;若不等,则缩小范围,判断该值落在区间的前一部分还是后一部分,再将其所在的部分作为新的查找区间。
继续上述过程,一直到找到该值或区间大小小于0表明查找不成功时为止。
请输入并运行下面的程序,体会二分查找法的算法的实现方式。
publicclassarrayBinary{
publicstaticintbsearch(intarray[],intvalue){
booleanfound=false;
inthigh=;
intlow=0;
intcnt=0;
intmid=(high+low)/2;
for″+value);
while(!
found&&(high>=low)){
if(value==array[mid])
found=true;
else
if(value high=mid-1; else low=mid+1; mid=(high+low)/2; cnt++; } retrun((found)mid: -1); } publicstaticvoidmain(Stringargs[]){ inta[]=newint[100]; for(inti=0;i<;i++) a[i]=i; 思考: (1)程序中整型变量high、low、mid、cnt分别起什么作用布尔型变量found又起到什么作用 (2)该程序是如何确定查找区间范围的 (3)该程序先定义了一个bsearch方法,然后在main()中多次调用该方法,请说出这样做有什么优点。 4.编程实现在无序数组中顺序查找一个特定的值,找到则返回该值在数组中的位置(下标),找不到则返回-1。 (想想,为什么用负值用为返回标志) 提示: 数组中的元素是无序的,因此搜索范围一定要是整个数组。 5.输入并运行下面的程序,体会二维数组的用法。 classMaxMatrix{ publicstaticvoidmain(Stringargs[]){ introw=0; intcol=0;语句,可以让包中的所有的类在程序中都可以使用; (2)创建一个数组; (3)使用Arrays类的sort()方法来重新调整一个数组的数据。 用Arrays类的sort()方法排过序的数组元素将被调整为按升序排列。 import.*;立一个字符串数组并按升序进行排序。 3.建立一个浮点型数组并按升序进行排序。 要求: 1、独立完成;并以实际上机操作计成绩; 2、所有上机实验必须在下一次实验之前完成,否则此次实验成绩算0分; 3、编写实验报告(按照报告模板编写,必须写出详细的实验步骤及必要的屏幕截图)。 实验六 类 一、实验课时 3课时。 二、实验目的 1.掌握如何定义类。 2.掌握如何定义类的成员变量、成员方法。 3.掌握如何创建对象。 4.掌握关键字static的用法。 5.掌握类成员的访问权限。 三、实验内容和要求 1.下面是一个教师类Teacher,用于学校某个系部的管理。 系部在管理教师时,所关心的信息主要有教师编号、姓名、性别、年龄、家庭住址、电话号码等,于是抽取这些属性来描述"教师"这个实体。 考虑到教师年龄、家庭住址、电话号码等不宜对无关人员公开,于是将这些数据设为私有的成员变量(即实行保护)。 要获得这些数据,必须使用类所提供的一组方法,并给出口令。 检查口令是否正确是由私有方法checkPasswork完成的。 阅读并编译这一程序,体会类的成员变量、类的方法以及访问权限的设计。 classTeacher{法名"调用,而可直接用"类名.方法名"来调用。 请设计一个测试程序。 Static类也有类似的情形吗再设计一个测试程序。 要求: 1、独立完成;并以实际上机操作计成绩; 2、所有上机实验必须在下一次实验之前完成,否则此次实验成绩算0分; 3、编写实验报告(按照报告模板编写,必须写出详细的实验步骤及必要的屏幕截图)。 实验七 继承和多态 一、实验课时 3课时。 二、实验目的 1.掌握如何创建子类。 2.掌握关键字this和super的用法。 3.体会方法重写和重载的区别。 4.体会抽象和抽象方法的用法。 三、实验内容和要求 1.下面程序中定义了汽车类Car和垃圾车类TrashCar。 其中垃圾车类由汽车类继承而来。 注意汽车类中声明了抽象方法powerType(动力类型),在垃圾车类中重写了这一方法。 上机编译、运行此程序,体会此程序中创建子类的方法和抽象类、抽象方法的用法。 请在此程序基础上利用继承声明一个客车类Bus,该类比汽车多一个属性: 座位数(intseat_num)。 动力类型为柴油发动机;在主类的主方法中增加一些语句来创建客车类的对象并对这些对象进行一些操作。 调试并运行你的程序。 abstractclassCar{ ″); } } publicclassOverLoadingDemo{ publicstaticvoidmain(Stringargs[]){ Fatherx=newFather(); ();; import.*; import.event.*; publicclassFrameDempl{ publicstaticvoidmain(Stringargs[]) {; import
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java语言程序设计实验指导书 Java 语言程序设计 实验 指导书