Java试验教学指导书_第1页
Java试验教学指导书_第2页
Java试验教学指导书_第3页
Java试验教学指导书_第4页
Java试验教学指导书_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

本文格式为Word版,下载可任意编辑——Java试验教学指导书《Java程序设计》实验教学指导书

许高攀编写

适用专业:计算机科学与技术

2023年5月

厦门理工学院计算机试验教学中心

前言

一、试验总体目标

随着Java语言程序设计是信息与计算科学专业的一门专业课,主要是给学生讲授Java语言的语法知识(包括类的知识点)、面向对象的程序设计思想与算法。使学生对面向对象编程有有比较深的了解,并具备这方面的能力。Java程序必需面向对象。由于这方面的内容比较抽象,须经过上机的实践,计算机是重视实践的学科,特别是对编程语言的学习,要重视实际操作。所以上机实践是很必要的。才能使学生领会面向对象的程序设计思想。

试验教学目的主要是使学生进一步深刻理解Java语言基本概念、语法规则及程序结构,熟练把握Java语言程序设计的基本方法,提高利用Java在网络环境下开发、设计应用程序的能力,从而进一步培养学生的创新能力和解决实际问题的能力。

本课程的试验任务是:

1、把握在利用JDK工具开发一些简单程序。

2、把握JAVA语言的面向对象的概念及编程思想,理解平台无关性。

二、适用专业年级

本大纲适用于计算机科学与技术和网络工程专业3年级学生使用。

三、先修课程

《C++程序设计》、《数据结构》和《操作系统》。

四、试验环境

计算机主频1.7GHz以上,内存512M以上。操作系统为WindowsXP或2000,JDK为1.6。

五、试验总体要求

试验中,试验者必需听从指导教师和试验室工作人员的安排,遵守纪律与试验制度,爱护设备及卫生。在指定的试验时间内,必需到试验室内试验,同时学生应当充分利用课余时间进行对试验内容的分析和程序设计。试验所涉及的Java程序代码,都要求有较高的可读性和可重用性,符合面向对象的编程思想和规范。

试验前要充分做好准备工作,建议如下:1、预习、思考试验内容;

2、复习和把握与本试验有关的知识内容;

3、准备好上机所需的程序代码,试验课内时间主要是解决问题、调试程序、运行程序、

1

测试程序和分析结果的时间,不能不编写程序或抄袭别人程序去做试验;

4、对程序中自己有不懂或疑问的地方,应做出记录,以便在试验课上集中解决;5、准备好调试和运行所需的数据。

试验时一人一组,独立上机。对于上机过程中出现的问题,尽量先独立思考和解决,特别是语法错误、编译器提醒信息,应擅长独立分析判断,这是提高程序调试能力最主要的途径;对于难以解决的问题可以和同学交流或问老师;对于一个试验题目,可以先考虑尽可能多的方法,然后再这些方法里面选择一种较为有效的方法来实现。

作为试验结果之一的试验代码书写要求规范明了,如缩进、空行、程序块对齐等;同时应当有必要的解释。试验后,应及时整理出试验报告,提交电子及书面文档的试验报告。

2

试验一Java程序的编辑、编译和运行

一、试验目的

1、熟悉安装和配置JDK开发环境

2、把握Java程序编辑、编译和运行的过程3、把握Java程序的构成特点二、试验内容

1、JDK的安装与环境变量的配置

安装JDK,观测安装后的目录体系,并在WindowsXP环境下分别配置JAVA_HOME、CLASSPATH、PATH三个环境变量。具体步骤如下所示。

(1)JDK下载安装过程

首先,进入JDK1.6下载网址:/javase/downloads/index_jdk6.jsp。其次,选择要下载的项目(此处需要选择JavaDevelopmentKit6.0Update5),然后点击“Download〞。在下载页面选择下载页面会列出各个平台下的JDK版本,选择其中Windows版(32位);有两种安装方式,一种是完全下载后再安装,一种是在线安装,选择下载后再安装。

下载完成后,双击图标进行安装,安装过程中可以自定义安装目录等信息,例如选择安装目录为C:\\jdk16。

(2)配置JDK环境变量

右击“我的电脑〞,点击“属性〞,如图1-1所示。

图1-1选择属性示意图

选择“高级〞选项卡,点击“环境变量〞,如图1-2所示。

3

图1-2环境变量选取示意图

在“系统变量〞中,设置3个变量:JAVA_HOME,Path,ClassPath(大小写均可)。若已存在则点击“编辑〞,不存在则点击“新建〞,如图1-3所示。

图1-3需要的属性设置示意图

4

System.out.printf(“\\n%d是1位数〞,number);System.out.printf(“\\n%d是回文数〞,number);}

}else

System.out.printf(“\\n%d不在1~99999之间〞,number);

System.out.printf(“\\n可继续输入整数,或输入非整数终止程序%n〞);}

System.out.printf(“你输入的数据不是整数〞);}

}

三、思考题

1、在猜数字的程序中,语句“System.out.println(“猜对了!〞);〞为何要放在while语句之后?放在while语句的循环体中合理吗?

2、在运行回文数程序时,用户从键盘输入1221,程序提醒怎样的信息?3、Java运算符的优先级与结合性是怎样的?

4、使用if语句实现单分支、两分支和使用switch语句实现多分支的程序程序结构和流程分别是什么?

5、使用if语句和switch语句都可以实现多分支,它们之间的区别是什么?

6、使用while、do-while和for语句实现循环的程序程序结构和流程分别是什么?

10

试验四类的封装和继承

一、试验目的

1、把握使用类来封装对象的属性和功能。2、把握子类的继承性。3、把握子类对象的创立过程。4、把握成员变量的继承和隐蔽。5、把握方法的继承。二、试验内容

1、三角形、梯形和圆形的类封装

编写一个Java应用程序,该程序中有3个类:Trangle,Lader和Circle,分别用来刻画“三角形〞、“梯形〞和“圆形〞。具体要求如下:

(1)Trangle类具有类型为double的三个边以及周长、面积属性,Trangle类具有返回周长、面积以及修改三个边的功能,另外,Trangle还具有一个boolean类型的属性,该属性用来判断三个数是否构成一个三角形;

(2)Lader类具有类型为double的上底、下底、高、面积属性,就有返回面积的功能;(3)Circle类具有类型为double的半径、周长和面积属性,具有返回周长、面积的功能。

//AreaAndLength.javaclassTrangle{

doublesideA,sideB,sideC,area,length;booleanboo;

publicTrangle(doublea,doubleb,doublec){

//参数a,b,c分别赋值给sideA,sideB,sideC。if(){//a,b,c构成三角形的条件表达式。

//给boo赋值。}else{

//给boo赋值。}}

doublegetLength(){

//方法体,要求计算出length的值并返回。}

publicdoublegetArea(){

if(boo){

doublep=(sideA+sideB+sideC)/2.0;

area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC));returnarea;}else{

System.out.println(\不是一个三角形,不能计算面积\return0;

11

}

}

publicvoidsetABC(doublea,doubleb,doublec){

//参数a,b,c分别赋值给sideA,sideB,sideC。if()//a,b,c构成三角形的条件表达式。{

//给boo赋值。}else{

//给boo赋值。}}

}

classLader{

doubleabove,bottom,height,area;Lader(doublea,doubleb,doubleh){

//方法体。}

doublegetArea(){

//方法体,,要求计算出area返回。}}

classCircle{

doubleradius,area;Circle(doubler){

//方法体。}

doublegetArea(){

//方法体,要求计算出area返回。}

doublegetLength(){

//方法体,要求计算出length返回。}

voidsetRadius(doublenewRadius){

radius=newRadius;}

doublegetRadius(){

returnradius;}}

publicclassAreaAndLength{

publicstaticvoidmain(Stringargs[]){

doublelength,area;Circlecircle=null;Trangletrangle;

12

Laderlader;

//创立对象circle。//创立对象trangle。//创立对象lader。

//circle调用方法返回周长并赋值给length。System.out.println(\圆的周长:\

//circle调用方法返回面积并赋值给area。System.out.println(\圆的面积:\

//trangle调用方法返回周长并赋值给length。System.out.println(\三角形的周长:\

//trangle调用方法返回面积并赋值给area。System.out.println(\三角形的面积:\

//lader调用方法返回面积并赋值给area。System.out.println(\梯形的面积:\

//trangle调用方法返修改三个边的代码,要求将三个边修改为12,34,1。

//trangle调用方法返回面积并赋值给area。System.out.println(\三角形的面积:\

//trangle调用方法返回周长并赋值给length。System.out.println(\三角形的周长:\

}

}

2、继承

编写一个Java程序,除了主类外,该程序中还有4个类People、ChinaPeople、AmericanPeople和BeijingPeople类。要求如下:

(1)People类含有访问权限为protected、类型为double的成员变量:height和weight,以及publicvoidspeakHello()、publicvoidaverageHeight()和publicvoidaverageWeight()方法。

(2)ChinaPeople类是People的子类,新增了publicvoidchinaGongfu()方法。要求chinaPeople重写父类的publicvoidspeakHello()、publicvoidaverageHeight()和publicvoidaverageWeight()方法。

(3)AmericanPeople类是People的子类,新增了publicvoidamericanBoxing()方法。要求AmericanPeople重写父类的publicvoidspeakHello()、publicvoidaverageHeight()和publicvoidaverageWeight()方法。

(4)BeijingPeople类是ChinaPeople的子类,新增了publicvoidbeijingOpera()方法。要求ChinaPeople重写父类的publicvoidspeakHello()、publicvoidaverageHeight()和publicvoidaverageWeight()方法。

//Example.javaclassPeople{

protecteddoubleweight,height;publicvoidspeakHello(){

System.out.println(\}

publicvoidaverageHeight(){

13

height=173;

System.out.println(\}

publicvoidaverageWeight(){

weight=70;

System.out.println(\}

}

classChinaPeopleextendsPeople{

//重写publicvoidspeakHello()方法,要求输出类似“你好,

//吃了吗〞这样的汉语信息。

//重写publicvoidaverageHeight()方法,要求输出类似

//“中国人的平均身高:168.78厘米〞这样的汉语信息。

//重写publicvoidaverageWeight()方法,

//要求输出类似“中国人的平均体重:65公斤〞这样的汉语信息。

publicvoidchinaGongfu(){

//输出中国武术的信息,例如:\坐如钟,站如松,睡如弓\等。}}

classAmericanPeopleextendsPeople{

//重写publicvoidspeakHello()方法,要求输出类似

//“Howdoyoudo〞这样的英语信息。

//重写publicvoidaverageHeight()方法。//重写publicvoidaverageWeight()方法。publicvoidamericanBoxing(){

//输出拳击的信息,例如,“直拳〞、“钩拳〞等。}}

classBeijingPeopleextendsChinaPeople{

//重写publicvoidspeakHello()方法,要求输出类似“您好〞这样的汉语信息。

//重写publicvoidaverageHeight()方法。//重写publicvoidaverageWeight()方法。publicvoidbeijingOpera(){

//输出京剧的信息。}}

publicclassExample{

publicstaticvoidmain(Stringargs[]){

ChinaPeoplechinaPeople=newChinaPeople();

AmericanPeopleamericanPeople=newAmericanPeople();BeijingPeoplebeijingPeople=newBeijingPeople();chinaPeople.speakHello();americanPeople.speakHello();

14

beijingPeople.speakHello();chinaPeople.averageHeight();americanPeople.averageHeight();beijingPeople.averageHeight();chinaPeople.averageWeight();americanPeople.averageWeight();beijingPeople.averageWeight();chinaPeople.chinaGongfu();

americanPeople.americanBoxing();beijingPeople.beijingOpera();beijingPeople.chinaGongfu();}

}

三、思考题

1、一个方法或一个块内定义的变量是否可以在方法外或块外使用?这种变量称为什么?方法的形式参数是否可以在方法之外使用?

2、为什么说构造函数是一种特别的方法?特别在哪里?构造函数什么时候执行?被谁调用?

3、子类重新定义与父类方法的方法头完全一致的方法,这种状况称为什么?4、同名的不同方法共存的状况称为什么?如何区分这些同名方法?

5、定义一个类实现银行帐户的概念,包括的变量有“帐号〞和“存款余额〞,包括的方法有“存款〞、“取款〞和“查询余额〞。定义主类,创立帐户类的对象,并完成相应操作。

15

试验五多态与接口

一、试验目的

1、了解抽象类和接口的原理。2、能运用抽象类和接口。3、理解多态的概念。4、学习实现多态。二、试验内容

1、定义一个接口,用于查询课程

定义一个类Student,包括如下属性:学号(ID)、姓名(name)、性别(Sex)、出生日期(birthDate)、专业(specialty)、课程(course),实现以下方法:每个属性的获取和定义,要求至少包含一个构造函数。定义一个接口类,定义方法query_course_catalog()用来查询课程。编写一个接口,定义相关选课操作,定义Student实现该接口。

//定义一个接口,用于查询课程

publicinterface{//根据专业查询课程

publicStringquery_course_catalog(Stringspeciality);}

//Student类,并实现接口

publicclassStudentimplements{

intID;//学号

Stringname[];//姓名charsex;//性别

Stringbirthdate;//出生日期yyyy-MM-ddStringspecialty;//专业Stingcourse;//课程

publicStudent(intID,Stringname,charsex,Stringbirthdate,Stringspecialty,Stringcourse){//实现构造函数,用于初始化信息

}

publicshowInfor(){//输出学生的基本信息

}

publicStringquery_course_catalog(Stringspeciality){

return“welcometoyou!〞;}

publicstaticvoidmain(String[]args){

Studentstudent=newStudent();

Stringstr=student.query_course_catalog();System.out.println(str);System.out.println(student);}}

2、抽象类和抽象方法

16

(1)定义一个抽象类Shape,类里有一个抽象方法display();

(2)定义一个Cricle类,继承了Shape类,并实现抽象方法display();(3)定义一个Rectangle类,继承了Shape类,并实现抽象方法display();(4)定义一个Triangle类,继承了Shape类,并实现抽象方法display();

(5)定义一个类,实例化上述几个类的对角,并提用上述几个类的display方法。3、改用接口来实现题目2三、思考题

1、同名的不同方法共存的状况称为什么?如何区分这些同名方法?

2、创立一个类,声明一个无参数的构造函数,打印类已创立的信息;再重载一个具有String参数的构造函数,打印参数信息;并创立主类验证之。

3、定义一个矩形类,再定义接口EqualDiagonal,其中包含方法getDiagonal();由矩形类派生出一个正方形类,自行扩展成员变量和方法,并实现此接口EqualDiagonal。

17

试验六字符串操作

一、试验目的

1、把握String类处理字符串的有关操作。

2、把握StringBuffer类处理字符串的有关操作。二、试验内容

1、String类的常用方法

编写一个Java应用程序,判断两个字符串是否一致,判断字符串的前缀、后缀是否与某个字符串一致,以及按字典顺序比较两个字符串的大小关系,进行字符串检索,创立字符串,将数字型字符串转化为数字,将字符串存放到数组中,用字符数组创立字符串等。

//StringExample.javaclassStringExample{

publicstaticvoidmain(Stringargs[]){

Strings1=newString(“youareastudent〞);Strings2=newString(“howareyou〞);

if(){//判断s1与s2是否一致

System.out.println(“s1与s2一致〞);}else{

System.out.println(“s1与s2不一致〞);}

Strings3=newString(“2000202320232345〞);

if(){//判断s3的前缀是否为“2000202〞

System.out.println(“吉林省的身份证〞);}

Strings4=newString(“你〞);Strings5=newString(“我〞);

if(){//按字典顺序,s4大于s5的表达式

System.out.println(“按字典顺序,s4大于s5〞);}else{

System.out.println(“按字典顺序,s4小于s5〞);}

intposition=0;

Stringpath=“C:\\\\java\\\\jsp\\\\A.java〞;

position=//获取path中最终出现目录分隔符号的位置System.out.println(“C:\\\\java\\\\jsp\\\\A.java中最终出现\\\\的位置:〞+position);StringfileName=//获取path中“A.java〞子字符串

System.out.println(“C:\\\\java\\\\jsp\\\\A.java中含有的文件名:〞+fileName);Strings6=newString(“100〞);Strings7=newString(“123.678〞);

intn1=//将s6转化成int类型数据

doublen2=//将s7转化成double类型数据

18

doublen=n1+n2;System.out.println(n);

Strings8=newString(“ABCDEF〞);

chara[]=//将s8存放到数组a中for(inti=a.length-1;i>=0;i--)

System.out.printf(“

}

三、思考题

1、StringBuffer类的length()方法和capacity()方法有何不同?2、String类和StringBuffer类有何不同?

20

试验七Java流和文件操作

一、试验目的

1、把握流的概念。

2、把握字符输入/输出流以及缓冲流的用法。

3、把握使用流读取文件的内容,并将内容写入到内存。4、把握数据流、对象流的使用。二、试验内容

1、给文件的内容添加行号

编写一个Java应用程序,给已存在的.txt文本文件添加行号。要求该文本文件事先用文本编辑完毕,保存在C:\\1000目录中,命名为hello.txt。程序运行效果如图7-1所示。

图7-1程序运行效果

importjava.io.*;

publicclassReadExample{

publicstaticvoidmain(Stringargs[]){

Filefile=newFile(\FiletempFile=newFile(\try{

FileReaderinOne=//创立指向文件file的输入流。

BufferedReaderinTwo=//创立指向inOnefile的输入流。FileWritertofile=//创立指向文件tempFile的输出流。BufferedWriterout=//创立指向tofile的输出流。Strings=null;inti=0;

s=//inTwo读取一行。while(s!=null){

i++;

out.write(i+\out.newLine();

s=//inTwo读取一行。}

inOne.close();inTwo.close();out.flush();out.close();tofile.close();

inOne=//创立指向文件tempFile的输入流

21

inTwo=//创立指向inOnefile的输入流。tofile=//创立指向文件file的输出流。out=//创立指向tofile的输出流。while((s=)!=null){//inTwo读取一行。

out.write(s);out.newLine();}

inOne.close();inTwo.close();out.flush();out.close();tofile.close();

inOne=//创立指向文件file的输入流。inTwo=//创立指向inOnefile的输入流。while((s=)!=null){//inTwo读取一行。System.out.println(s);}

inOne.close();inTwo.close();tempFile.delete();}

catch(IOExceptione){

System.out.println(e);}}

}

2、读写基本数据类型数据

编写一个Java应用程序,将若干基本数据写入到一个文件,然后再按顺序读出。importjava.io.*;

publicclassNumberExample{

publicstaticvoidmain(Stringargs[]){

inta1=12,a2=1180;longb=808080;

floatx1=3.14F,x2=12.456F;doubled=1234.9876;

booleanboo1=true,boo2=false;charc='我';

Filef=//创立文件。try{

FileOutputStreamfos=//创立指向f文件输出流

DataOutputStreamout_data=//创立指向fos的数据输出流//out_data将数据a1写入到文件//out_data将数据a2写入到文件

22

//out_data将数据b写入到文件//out_data将数据x1写入到文件//out_data将数据x2写入到文件//out_data将数据d写入到文件//out_data将数据boo1写入到文件//out_data将数据boo2写入到文件//out_data将数据c写入到文件

}

catch(IOExceptione){}try{

FileInputStreamfis=//创立指向f文件输入流

DataInputStreamin_data=//创立指向fis的数据输入流System.out.println();//in_data读取int整数System.out.println();//in_data读取int整数System.out.println();//in_data读取long整数System.out.println();//in_data读取float数System.out.println();//in_data读取float数System.out.println();//in_data读取double数System.out.println();//in_data读取boolean数据System.out.println();//in_data读取boolean数据System.out.print(importjava.util.*;importjava.io.*;

publicclassObjectExample{

publicstaticvoidmain(Stringargs[]){

Calendarcalendar1=Calendar.getInstance();//创立一个日历对象Calendarcalendar2=Calendar.getInstance();//创立

温馨提示

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

评论

0/150

提交评论