《Java语言程序设计实验指导书》实验指导书.docx

上传人:b****5 文档编号:12369088 上传时间:2023-04-18 格式:DOCX 页数:64 大小:35.84KB
下载 相关 举报
《Java语言程序设计实验指导书》实验指导书.docx_第1页
第1页 / 共64页
《Java语言程序设计实验指导书》实验指导书.docx_第2页
第2页 / 共64页
《Java语言程序设计实验指导书》实验指导书.docx_第3页
第3页 / 共64页
《Java语言程序设计实验指导书》实验指导书.docx_第4页
第4页 / 共64页
《Java语言程序设计实验指导书》实验指导书.docx_第5页
第5页 / 共64页
点击查看更多>>
下载资源
资源描述

《Java语言程序设计实验指导书》实验指导书.docx

《《Java语言程序设计实验指导书》实验指导书.docx》由会员分享,可在线阅读,更多相关《《Java语言程序设计实验指导书》实验指导书.docx(64页珍藏版)》请在冰豆网上搜索。

《Java语言程序设计实验指导书》实验指导书.docx

《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[])

{

}

}

3.编译运行Java程序。

4.设置环境变量,在命令行下编译运行Java程序。

5.浏览运行JDK自带的Applet应用小程序。

6.在程序中设置断点、单步执行、查看变量值。

要求:

1、独立完成;并以实际上机操作计成绩;

2、所有上机实验必须在下一次实验之前完成,否则此次实验成绩算0分;

3、编写实验报告(按照报告模板编写,必须写出详细的实验步骤及必要的屏幕截图)。

实验二 创建一个Applet

一、实验课时

3课时。

二、实验目的

了解Applet与Application的区别,学会设计Applet程序。

三、实验内容和要求

已知JButton类有一个构造函数原形为:

publicJButton(Stringtext,Iconicon)。

其中参数text为显示在按钮上的文本、参数icon为显示在按钮上的图标。

下面的例子就是利用此构造函数产生一个带有文本、图标的按钮,并且当按一下按钮,图标就切换一次。

此图标切换是在两个图标中循环进行的。

程序如下:

importjavax.swing.*;

importjava.awt.*;

importjava.awt.event.*;

publicclassButtonExampleextendsJApplet{

intimageNum=1;

publicvoidinit(){

Containercon=getContentPane();

finalJButtonjb_ok=newJButton(″按我″,newImageIcon(″sun1.gif″));

con.setLayout(newFlowLayout());

con.add(jb_ok);

jb_ok.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

if(imageNum==1){

jb_ok.setIcon(newImageIcon(″sun2.gif″));

imageNum=2;

}

else{

jb_ok.setIcon(newImageIcon(″sun1.gif″));

imageNum=1;

}

}

});

}

}

此程序中还用到了JButton类的setIcon()方法,用以设置按钮的新的图标。

Html文件代码:

(文件名为Appcounter.htm)

将该文件与ButtonExample.class保存在同一个目录中,使用appletviewerappconmter.htm命令就可以运行这个applet。

要求:

1、独立完成;并以实际上机操作计成绩;

2、所有上机实验必须在下一次实验之前完成,否则此次实验成绩算0分;

3、编写实验报告(按照报告模板编写,必须写出详细的实验步骤及必要的屏幕截图)。

实验三 数据类型及表达式

一、实验课时

3课时。

二、实验目的

1.掌握Java语言的基本数据类型,了解数据类型包装类的概念。

2.掌握变量和表达式的用法。

3.理解类型转换的概念。

三、实验内容和要求

1.输入并运行下面的程序,体会各种基本数据类型的变量的声明、初始化及使用。

publicclassBasicTypes{

publicstaticvoidmain(Stringargs[]){

byteb=0x88;

shorts=0200;

inti=111111;

charc='A';

floatf=.33f;

doubled=.00001001;

booleanbl=true;

″byteb=″+b);

″shorts=″+s);

″inti=″+i);

″long1=″+1);

″charc=″+c);

″floatf=″+f);

″doubled=″+d);

″booleanbl=″+bl);

}

}

思考:

(1)上述程序中定义了哪些变量?

每个变量的变量名、数据类型和作用域分别是什么?

(2)查看程序的运行结果,分析为什么有些变量最后输出的结果和初始化时的不同?

2.输入并运行下面的程序并分析结果,体会各种表达式的使用方法。

(1)publicclassArithmaticOp{

publicstaticvoidmain(Stringargs[]){

inta=5,b=3,c;

doubled=2.5;

c=a/b+a%b;

″c=″+c);

d=c*b+a/b*d;

″d=″+d);

}

}

(2)publicclassArithmaticOp2{

publicstaticvoidmain(Stringargs[]){

inta,b,c;

a=b=c=5;

a=++b-++c;

″a=″+a+″b=″+b+″c=″+c);

a=b+++c++;

″a=″+a+″b=″+b+″c=″+c);

a=b――+c――;

″a=″+a+″b=″+b+″c=″+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;

″x=″+x+″,y=″+y);

}

}

思考:

(1)上述程序中用到了哪些运算符?

运算符的优先级如何?

(2)增一和减一运算符(++和--)放在变量和放在变量之后,其用法有何不同?

(3)将你分析程序得到的结果与实际的运行结果相比较,如果有不同,原因在哪里?

3.输入并运行下面的程序,分析结果,了解并掌握自动类型转换用法。

publicclassPromotion{

publicstaticvoidmain(Stringargs[]){

byteb=10;

charc=′a′;

inti=90;

longl=5551;

floatf=3.5f;

doubled=1.234;

floatf1=f*b;//float*byte―>float

inti1=c+i;//char+int―>int

longl1=1+i1;//long+int―>long

doubled1=f1/i1-d;//float/int―>float,float―double―>double

″f1=″+f1);

″il=″+il);

″l1=″+l1);

″d1=″+d1);

}

}

思考:

(1)上面的程序用到了哪些自动类型转换?

分别是如何实现的?

(2)何时需要用到强制类型转换?

强制类型转换可能会造成什么不良后果?

提高:

1.在Java中,数据类型包装类(typewrapperclass)用于封装基本数据类型的有关信息和操作。

虽然我们经常直接使用Java的基本数据类型,但由于它本身不具备任何操作,无法扩充自身功能,因此,为确保Java语言的纯面向对象特性,Java的语言基础包为数据类型提供了一些对象封装。

数据类型包装类是由多个类组成的一个集合,每种数据类型均存在相应的对象封装类。

下表列出了Java的数据类型包装及其对应的基本数据类型。

基本数据类型数据类型包装类

byteByte

shortShort

intInteger

longLong

floatFloat

doubleDouble

charCharacter

booleanBoolean

每一个类都提供了一些属性和方法,用户可以根据需要来灵活使用。

注意:

数据类型包装类与相应的基本数据类型名字几乎相同,请不要混淆。

前者的显着特点是第一个字母应为大写。

2.输入并运行下面的程序,了解并掌握数据类型包装类的属性和用法。

publicclassMaxVariables{

publicstaticvoidmain(Stringargs[]){

//integers

bytelargestByte=Byte.MAX_VALUE;

//MAX_VALUE是Byte类的属性(表示Byte类所能达到的最大值)

shortlargestShort=Short.MAX_VALUE;

intlargestInteger=Integer.MAX_VALUE;

longlargestLong=Long.MAX_VALUE;

//realnumbers

floatlargestFloat=Float.MAX_VALUE;

doublelargestDouble=Double.MAX_VALUE;

//otherprimitivetypes

charaChar=′S′;

booleanaBoolean=true;

//displaythemall

″Thelargestbytevalueis″+largestByte);

″Thelargestshortvalueis″+largestShort);

″Thelargestintegervalueis″+largestInteger);

″Thelargestlongvalueis″+largestLong);

″Thelargestfloatvalueis″+largestFloat);

″Thelargestdoublevalueis″+largestDouble);

//Character类有一个方法booleanisUpperCase(charch)是用来判断一个字符是

//否是大写

if(Character.isUpperCase(aChar)){

″Thecharacter″+aChar+″isuppercase.″);

}else{

″Thecharacter″+aChar+″islowercase.″);

}

″ThevalueofaBooleanis″+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{

″Print″+i);

i++;

}

}

}

(2)publicclassDoWhileDemo2{

publicstaticvoidmain(String[]args){

inti=100;

do{

″Print″+i);

i++

}while(i<100);

}

}

思考:

运行上面两个程序,比较While和DoWhile语句的执行过程有何不同。

2.输入并运行下面的程序:

publicclasslxsum{

publicstaticvoidmain(String[]args){

inti=1,sum;

sum=0;

while(i<=100){

sum+=i;

i++

}

″sum=″+sum);

}

}

思考:

(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++;

}

″i=″+i);

″j=″+j);

}

}

思考:

(1)将你分析程序得到的结果与实际的运行结果相比较,看看有没有什么不同。

如果有不同,原因在哪里?

(2)break语句在switch语句中起到了什么作用?

4.输入并运行下面的程序,判断某一年是否是闰年。

闰年的条件是符合下面二者之一:

(1)能被4整除,但不能被100整除;

(2)能被4整除,又能被400整除。

publicclassJudgeLeapYear{

publicstaicvoidmain(Stringargs[]){

//方法1

intyear=1800;

if((year%4==0&&year%100!

=0)||(year%400==0))

″年是闰年″);

else

″年不是闰年″);

//方法2

year=1997;

booleanleap;

if(year%4!

=0)

leap=false;

elseif(year%100!

=0)

leap=true;

elseif(year%400!

=0)

leap=false;

else

leap=true;

if(leap==true)

″年是闰年″);

else

″年不是闰年″)

//方法3

year=2000;

if(year%4==0){

if(year%100==0){

if(year%400==0)

leap=true;

else

leap=false;

}else

leap=false;

}else

leap=false;

if(leap==true)

″年是闰年″);

else

″年不是闰年″);

}

}

思考:

(1)程序中是如何判断一个数能被另一个数整除的?

(2)请说出程序中用了哪三种方法来判断是否闰年,并体会其中的联系和区别。

提高:

在输入程序的过程中难免要出错。

一般说业,程序中的错误有两种:

语法错误和逻辑错误。

程序调试就是要找出程序中的错误,编出正确的程序。

下面的程序用来输出5次"Hello!

",请更正程序中的错误,并上机调试运行。

publicclassHello{

publicstaticvoidmain(String[]args){

for(i=1;i<5;i++);

{

″time″+i+″:

Hello!

″);

}

}

}

在MS-DOS下编译该程序,输入javacHello.java,屏幕上会出现如下错误信息:

Hello.java:

5:

Undefinedvariable:

i

for(i=1;i<5;i++);

?

Hello.java:

5:

Undefinedvariable:

i

for(i=1;i<5;i++);

Hello.java:

5:

Undefinedvarable:

i

for(i=1;i<5;i++)

?

Hello.java:

7:

Undefinedvariable:

i

″time″+i+″:

Hello″);

4errors

可以看到,Java中的错误信息包含如下内容:

(1)源程序文件名;

(2)出错那一行的行号;

(3)出错的类型;

(4)出错那一行的内容。

根据系统给出的错误信息,可以进行相应的修改。

如上面的几个错误,类型都是"Undefinedvariable:

i",也就是说,变量i尚未定义。

于是就可以分析出出错的原因是程序中没有声明变量i就直接使用了它,就是一个语法错误,在源程序中进行相应的修改。

修改过的程序内容如下:

publicclassHello{

publicstaticvoidmain(String[]args){

inti;//新添的变量说明

for(i=1;i<5;i++){

System.out.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

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1