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

《Java语言程序设计实验指导书》实验指导书高川翔xx年2月

一、实验的地位、作用Java语言程序设计实验作为课程实践性环节之一,是教学过程中必不可少的重要内容。

通过计算机实验和案例分析,使学生加深理解、验证巩固课堂教学内容;增强高级语言程序设计的感性认识;掌握程序设计的基本方法;培养学生理论与实践相结合的能力。

二、实验开设对象本实验开设对象为《Java语言程序设计》课程的学习者(信息与计算科学专业本科生),实验为必修内容。

三、基本原理及课程简介Java语言程序设计是必修基础课程。

本课程以BlueJ为工具,主要介绍面向对象的程序设计方法,Java面向对象程序设计语言和面向对象程序设计工具。

使学生掌握面向对象的思想方法,是后续专业课程的基础。

四、指导教师原则上由Java语言程序设计讲授教师负责,由年轻教师担任主要的实验指导教师,实验室人员配合指导。

指导教师应在每次实验前讲清实验目的、基本原理、实验要求等,指导学生在规定的时间内完成相关课程实验。

五、实验设备配置每人配置1台电脑,安装有JDK,以及Blue J、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应用程序(以下实验前请仔细阅读Bl ueJ教程的电子文档)2.在BlueJ环境下新建一个工程,在工程中编写一个简单的Java程序,在屏幕上输出”hello,java!”。

public classHello{public staticvoid main(String args[]){System.out.println("hello,java!");}}3.编译运行Java程序。

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

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

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

要求

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

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

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

实验二创建一个Applet

一、实验课时3课时。

二、实验目的了解Applet与Application的区别,学会设计Applet程序。

三、实验内容和要求已知JButton类有一个构造函数原形为public JButton(String text,Icon icon)。

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

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

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

程序如下import javax.swing.*;import java.awt.*;import java.awt.event.*;public classButtonExample extendsJApplet{int imageNum=1;public voidinit(){Container con=getContentPane();final JButtonjb_ok=new JButton(″按我″,new ImageIcon(″sun1.gif″));con.setLayout(new FlowLayout());con.add(jb_ok);jb_ok.addActionListener(new ActionListener(){public voidactionPerformed(ActionEvent e){if(imageNum==1){jb_ok.setIcon(new ImageIcon(″sun2.gif″));imageNum=2;}else{jb_ok.setIcon(new ImageIcon(″sun1.gif″));imageNum=1;}}});}}此程序中还用到了JButton类的setIcon()方法,用以设置按钮的新的图标。

Html文件代码(文件名为Appcounter.htm)将该文件与ButtonExample.class保存在同一个目录中,使用appletviewer appconmter.htm命令就可以运行这个applet。

要求

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

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

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

实验三数据类型及表达式

一、实验课时3课时。

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

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

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

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

public classBasicTypes{public staticvoid main(String args[]){byte b=0x88;short s=0200;int i=111111;long l=0x111111111;char c=A;float f=.33f;double d=.00001001;boolean bl=true;System.out.println(″byte b=″+b);System.out.println(″short s=″+s);System.out.println(″int i=″+i);System.out.println(″long1=″+1);System.out.println(″char c=″+c);System.out.println(″float f=″+f);System.out.println(″double d=″+d);System.out.println(″boolean bl=″+bl);}}思考

(1)上述程序中定义了哪些变量?每个变量的变量名、数据类型和作用域分别是什么?

(2)查看程序的运行结果,分析为什么有些变量最后输出的结果和初始化时的不同?2.输入并运行下面的程序并分析结果,体会各种表达式的使用方法。

(1)public classArithmaticOp{public staticvoid main(String args[]){int a=5,b=3,c;double d=2.5;c=a/b+a%b;System.out.println(″c=″+c);d=c*b+a/b*d;System.out.println(″d=″+d);}}

(2)public classArithmaticOp2{public staticvoid main(String args[]){int a,b,c;a=b=c=5;a=++b-++c;System.out.println(″a=″+a+″b=″+b+″c=″+c);a=b+++c++;System.out.println(″a=″+a+″b=″+b+″c=″+c);a=b――+c――;System.out.println(″a=″+a+″b=″+b+″c=″+c;}}

(3)public classLogicOp{public staticvoid main(String args[]){boolean x,y;x=5>3‖3*4<6&&!(5<3);y=2==6&&9>8+4||5+6<7+4&&!x;Systeme.out.println(″x=″+x+″,y=″+y);}}思考

(1)上述程序中用到了哪些运算符?运算符的优先级如何?

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

(3)将你分析程序得到的结果与实际的运行结果相比较,如果有不同,原因在哪里?3.输入并运行下面的程序,分析结果,了解并掌握自动类型转换用法。

public classPromotion{public staticvoid main(String args[]){byte b=10;char c=′a′;int i=90;long l=5551;float f=3.5f;double d=1.234;float f1=f*b;//float*byte―>float int i1=c+i;//char+int―>int longl1=1+i1;//long+int―>long doubled1=f1/i1-d;//float/int―>float,float―double―>double System.out.println(″f1=″+f1);System.out.println(″il=″+il);System.out.println(″l1=″+l1);System.out.println(″d1=″+d1);}}思考

(1)上面的程序用到了哪些自动类型转换?分别是如何实现的?

(2)何时需要用到强制类型转换?强制类型转换可能会造成什么不良后果?提高1.在Java中,数据类型包装类(type wrapperclass)用于封装基本数据类型的有关信息和操作。

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

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

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

基本数据类型数据类型包装类byte Byteshort Shortint Integerlong Longfloat Floatdouble Doublechar Characterboolean Boolean每一个类都提供了一些属性和方法,用户可以根据需要来灵活使用。

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

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

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

public classMaxVariables{public staticvoid main(String args[]){//integers bytelargestByte=Byte.MAX_VALUE;//MAX_VALUE是Byte类的属性(表示Byte类所能达到的最大值)short largestShort=Short.MAX_VALUE;int largestInteger=Integer.MAX_VALUE;long largestLong=Long.MAX_VALUE;//real numbersfloat largestFloat=Float.MAX_VALUE;double largestDouble=Double.MAX_VALUE;//other primitivetypes charaChar=′S′;boolean aBoolean=true;//display them all System.out.println(″The largestbyte valueis″+largestByte);System.out.println(″The largestshort valueis″+largestShort);System.out.println(″The largestinteger valueis″+largestInteger);System.out.println(″The largestlong valueis″+largestLong);System.out.println(″The largestfloat valueis″+largestFloat);System.out.println(″The largestdouble valueis″+largestDouble);//Character类有一个方法boolean isUpperCase(char ch)是用来判断一个字符是//否是大写if(Character.isUpperCase(aChar)){System.out.println(″The character″+aChar+″is uppercase.″);}else{System.out.println(″The character″+aChar+″is lowercase.″);}System.out.println(″The valueof aBooleanis″+aBoolean);}}

(1)修改上面的程序,让它能输出每种整型数据类型能表示的最小值。

(提示Byte类型的最小值属性是MIN_VALUE)

(2)Character类有另一个方法boolean isLowerCase(char ch),可以来判断一个字符是否为小写。

修改适当的语句,使程序完成相同的功能。

(3)修改上面的程序,使布尔型变量aBoolean具有一个不同的值。

要求

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

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

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

实验四控制流程

一、实验课时3课时。

二、实验目的1.充分掌握流程控制语句的格式和功能。

2.熟练运用流程控制语句进行程序设计。

3.学会进行简单的程序调试。

三、实验内容和要求1.输入并运行下面两个程序

(1)public classWhileDemo2{public staticvoid main(String[]args){int i=100;while(i<100{System.out.println(″Print″+i);i++;}}}

(2)public classDoWhileDemo2{public staticvoid main(String[]args){int i=100;do{System.out.println(″Print″+i);i++}while(i<100);}}思考运行上面两个程序,比较While和DoWhile语句的执行过程有何不同。

2.输入并运行下面的程序public classlxsum{public staticvoid main(String[]args){int i=1,sum;sum=0;while(i<=100){sum+=i;i++}System.out.println(″sum=″+sum);}}思考

(1)循环一般适用于什么情况?

(2)请用for循环和do-while循环为实现上面的程序的功能。

3.输入并运行下面的程序,体会switch语句的使用。

public classlxswitch{public staticvoid main(String[]args){int x=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++;}System.out.println(″i=″+i);Sysem.out.printin(″j=″+j);}}思考

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

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

(2)break语句在switch语句中起到了什么作用?4.输入并运行下面的程序,判断某一年是否是闰年。

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

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

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

public classJudgeLeapYear{public staicvoid main(String args[]){//方法1int year=1800;if((year%4==0&&year%100!=0)||(year%400==0))System.out.println(year+″年是闰年″);else System.out.println(year+″年不是闰年″);//方法2year=1997;boolean leap;if(year%4!=0)leap=false;else if(year%100!=0)leap=true;else if(year%400!=0)leap=false;else leap=true;if(leap==true)System.out.println(year+″年是闰年″);else System.out.println(year+″年不是闰年″)//方法3year=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)System.out.println(year+″年是闰年″);else System.out.prinln(year+″年不是闰年″);}}思考

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

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

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

一般说业,程序中的错误有两种语法错误和逻辑错误。

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

下面的程序用来输出5次"Hello!",请更正程序中的错误,并上机调试运行。

public classHello{public staticvoid main(String[]args){for(i=1;i<5;i++);{System.out.println(″time″+i+″:Hello!″);}}}在MS-DOS下编译该程序,输入javac Hello.java,屏幕上会出现如下错误信息Hello.java:5:Undefined variable:i for(i=1;i<5;i++);?Hello.java:5:Undefined variable:i for(i=1;i<5;i++);Hello.java:5:Undefined varable:i for(i=1;i<5;i++)?Hello.java:7:Undefined variable:i System.out.println(″time″+i+″:Hello″);4errors可以看到,Java中的错误信息包含如下内容

(1)源程序文件名;

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

(3)出错的类型;

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

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

如上面的几个错误,类型都是"Undefined variable:i",也就是说,变量i尚未定义。

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

修改过的程序内容如下:public classHello{public staticvoid main(String[]args){int i;//新添的变量说明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.数组元素的排序是一个经常会遇到的问题,冒泡(起泡)排序法(bubble sort)是一种常用的排序方法。

它的基本思想是对一个具有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在此过程中,值小的数组元素好比水中气泡逐趟向上飘浮,而值大的数组元素好比石块沉入水底。

下面的代码是冒泡排序法的程序实现,请输入并运行之:public classBubbleSort{public staticvoid main(String args[]){int i,j;int intArray[]={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]){int t=intArray[i];intArray[j]=intArray[j+1];intArray[j+1]=t;}for(i=0;i<1;i++)System.out.println(intArray[i]+″″);}}思考

(1)什么情况下使用数组比较合理?

(2)为什么要用双重循环来实现此算法?循环变量i和j是如何来确定范围的?

(3)如何来交换两个数组元素的值?2.试着修改上面的程序,改为对一维数组中的元素按值从大到小进行排序,并输出最终结果。

3.我们经常需要在数组中查找一个特定的值。

对于已排好序的数组来说,二分查找法(折半查找法)是一种比较快捷的方法。

二分查找法的基本思路是先将整个数组作为查找区间,用给定的值与查找区间的中间元素的值相比较,若相等,则查找成功;若不等,则缩小范围,判断该值落在区间的前一部分还是后一部分,再将其所在的部分作为新的查找区间。

继续上述过程,一直到找到该值或区间大小小于0表明查找不成功时为止。

请输入并运行下面的程序,体会二分查找法的算法的实现方式。

public classarrayBinary{public staticint bsearch(int array[],int value){boolean found=false;int high=array.length-1;int low=0;int t=0;int mid=(high+low)/2;System.out.println(″Looking for″+value);while(!found&&(high>=low)){System.out.println(″Low″+low+″Mid″+mid+″High″+high);if(value==array[mid])found=true;else if(value

(1)程序中整型变量high、low、mid、t分别起什么作用?布尔型变量found又起到什么作用?

(2)该程序是如何确定查找区间范围的?

(3)该程序先定义了一个bsearch方法,然后在main()中多次调用该方法,请说出这样做有什么优点。

4.编程实现在无序数组中顺序查找一个特定的值,找到则返回该值在数组中的位置(下标),找不到则返回-1。

(想想,为什么用负值用为返回标志?)提示数组中的元素是无序的,因此搜索范围一定要是整个数组。

5.输入并运行下面的程序,体会二维数组的用法。

class MaxMatrix{public staticvoid main(String args[]){int row=0;int col=0;//放行号和列号int max;int m[][]={{6,2,3,24},{-5,8,7,6},{-3,18,-4,1}};max=m[0][0];for(int i=0;i<=2;i++){if(m[i][j]>max){max=m[i][j];row=i;col=j;}}System.out.println(″最大的元素的值为″+max);System.out.println(″该元素的位置在″+row+″行,″+col+″列″);}}6.修改上面的程序,改为求矩阵中最小的那个元素的值,以及其所在的行号和列号。

提高1.在Java中对数组进行排序,可以使用如下步骤

(1)使用import java.util.*语句,可以让java.util包中的所有的类在程序中都可以使用;

(2)创建一个数组;

(3)使用Arrays类的sort()方法来重新调整一个数组的数据。

用Arrays类的sort()方法排过序的数组元素将被调整为按升序排列。

import java.util.*;//让java.util包中的所有的类在程序中都可以使用class SortName{public staticvoid main(String args[]){String names[]={″Akbar″,″Umberto″,″Peter″,″Zemo″,″Digo″};System.out.println(″数组元素原来的顺序是″);for(int i=0;i

3.建立一个浮点型数组并按升序进行排序。

要求

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

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

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

实验六类

一、实验课时3课时。

二、实验目的1.掌握如何定义类。

2.掌握如何定义类的成员变量、成员方法。

3.掌握如何创建对象。

4.掌握关键字static的用法。

5.掌握类成员的访问权限。

三、实验内容和要求1.下面是一个教师类Teacher,用于学校某个系部的管理。

系部在管理教师时,所关心的信息主要有教师编号、姓名、性别、年龄、家庭住址、电话号码等,于是抽取这些属性来描述"教师"这个实体。

考虑到教师年龄、家庭住址、电话号码等不宜对无关人员公开,于是将这些数据设为私有的成员变量(即实行保护)。

要获得这些数据,必须使用类所提供的一组方法,并给出口令。

检查口令是否正确是由私有方法checkPasswork完成的。

阅读并编译这一程序,体会类的成员变量、类的方法以及访问权限的设计。

class Teacher{//定义教师类//声明成员变量String tCode;//教师编号String tName;//教师姓名String tSex;//教师性别private StringtAge;//教师年龄private StringtAddr;//家庭住址private StringtTelenmb;//电话号码private StringtPassword;访问口令//声明构造方法Teacher(String password){tPassword=password;}//声明成员方法private intcheckPassword(String password){//私有方法检查口令是否正确if(tPassword==password)return1;else return0;}void setAge(String passwork,String age)//置年龄{if(checkPassword(passwork)==1){tAge=age;}}String getAge(String password)//取年龄{if(checkPassword(password)==1)return tAge;else return″Wrong password!″;}void setAddr(String password,String addr)//置家庭地址{if(checkPassword(password)==1){tAddr=addr;}}String getAddr(String passwork)取家庭地址{if(checkPassword(password)==1)return tAddr;else return″Wrong password!″;}void setTelenmb(String passwork,String telenmb)//置电话号码{if(checkPassword(password)==1){tTelenmb=telenmb;}}String getTelenmb(String password)//取电话号码{if(checkPassword(password)==1)return tTelenmb;else return″Wrong password!″;}}2.下面的程序定义了一个学生类。

上机编译并运行此程序,观察运行结果,体会类的定义方法、类的成员变量的定义方法、对象的声明及其使用的方法。

class Student//Student是类名{//声明成员变量int sNumber;//学号String sName;//姓名String sClass;//班号}public classCheck0//主类Check0{public staticvoid main(String args[])//主方法main{Student x=new Student();//创建Student类的对象x//访问成员变量x.sName=″myname″;x.sNumber=900001;System.out.println(x.sName);System.out.println(x.sNumber);}}3.上面的Student类抽取了学号、姓名和班号来描述"学生"这个实体,但未对其实行保护。

请仿照教师类的定义对其进行修改,使得你认为重要的不宜公开的数据得到一定的保护。

4.若要使Student类可用于一个全校同学的通信录程序,请为此设计一具更完善的Student类,设计时应考虑抽取哪些属性来描述"学生"这个实体,哪些数据需要保护,应提供哪些方法,等等。

提高1.在学习计算机语言时,对于语法中的难点或疑点,可以通过编写一些测试程序加以澄清或验证,从而加深对语言的理解。

请将上面程序中Student类的成员变量sClass修饰为static,在下面的程序中填入适当的语句(创建几个Student类的对象,对其中的一个对象的sClass赋值,输出其他对象的sClass),验证成员变量sClass为学生类的不同对象所共享,加深对static变量的理解。

public classCheck1{public staticvoid main(String args[]){//在下行填入适当的语句,验证成员变量sClass为学生类的不同对象所共享}}2.关键字static也可用来修饰方法和类。

调用static方法(称为静态方法)时,不必先创建该类的对象再用"对象名.方法名"调用,而可直接用"类名.方法名"来调用。

请设计一个测试程序。

Static类也有类似的情形吗?再设计一个测试程序。

要求

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

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

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

实验七继承和多态

一、实验课时3课时。

二、实验目的1.掌握如何创建子类。

2.掌握关键字this和super的用法。

3.体会方法重写和重载的区别。

4.体会抽象和抽象方法的用法。

三、实验内容和要求1.下面程序中定义了汽车类Car和垃圾车类TrashCar。

其中垃圾车类由汽车类继承而来。

注意汽车类中声明了抽象方法powerType(动力类型),在垃圾车类中重写了这一方法。

上机编译、运行此程序,体会此程序中创建子类的方法和抽象类、抽象方法的用法。

请在此程序基础上利用继承声明一个客车类Bus,该类比汽车多一个属性座位数(int seat_num)。

动力类型为柴油发动机;在主类的主方法中增加一些语句来创建客车类的对象并对这些对象进行一些操作。

调试并运行你的程序。

abstract classCar{//定义抽象类Car private int carNumber;abstract void power();//声明抽象方法void setNumber(int carNum)//置车号{carNumber=carNum;}void showNumber()//显示车号{System.out.println(″我的车号是″+carNumber);}}class TrashCarextends Car{//定义TrashCar类,它继承Car类private intcapacity;voidpower()//重写父类Car的抽象方法{System.out.println(″汽油发动机驱动″);}void setCapacity(int trashCarCapacity){capacity=trashCarCapacity;}void showCapacity(){System.out.println(″我的容量是″+capacity+″″);}}class CarDemo//主类{public staticvoid main(String args[])//主方法{TrashCar DemoTrashCar=new TrashCar();DemoTrashCar.setNumber

(4949);DemoTrashCar.setCapacityr

(20);DemoTrashCar.showNumber();DemoTrashCar.showCapacity();}}2.编译并运行下面的程序,观察分析运行结果,体会程序中super和this的用法,进一步理解变量隐藏和方法重写的概念。

class SuperClss{//定义父类int x;SuperClss()//父类的构造方法{x=10;}void doClss(){System.out.println(″SuperClss.do Class()″);}}class SubClssextends SuperClss{//定义子类int x;SubClss()//子类的构造方法{super();//调用父类的构造方法x=100;}void doClss()//重写父类的doClss方法{System.out.println(″subClss.doClss()″);}void doDemo()//演示super和this的用法{int x;x=1000;super.doClss();//调用父类的doClss方法doClss();//调用本类的doClss方法System.out.println(″super.x=″+super.x);//父类的x System.out.println(″this.x=″+this.x);//本类的x System.out.println(″x=″+x);//本方法的x}}public classSuperDemo{public staticvoid main(String args[])//主方法{SubClss s=new SubClss();s.doDemo();}}3.编译并运行下面的程序,分析运行结果,体会其中方法重载的用法,进一步理解方法重载的概念。

class Father{//本类中的speak方法重载了两次void speak()无参的speak方法{System.out.println(″I amFather!″);}void speak(String s)//有参的speak方法System.out.println(″I like″+″″+s+″.″);}}public classOverLoadingDemo{public staticvoid main(String args[]){Father x=new Father();x.speak();//调用无参的speak方法x.speak(″music″)//调用有参的speak方法}}提高现实世界中有很多可以用继承描述的关系,如dog有name、color、weight等属性以及bark、run等行为,而pekinese(哈巴狗)可以描述为dog的子类。

结合你知识背景,举一个继承的例子,其中涉及抽象方法、方法重写、方法重载等概念。

画出类继承的层次图,并用Java语言描述之,再编译运行你的程序。

要求

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

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

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

实验八方法和构造

一、实验课时3课时。

二、实验目的1.掌握方法参数传递的过程。

2.掌握方法返回值的用法。

3.掌握构造方法的设计。

4.掌握对象初始化的过程。

5.掌握对象作为参数的用法。

三、实验内容和要求1.下面给出了一个计算阶乘的类Fact和使用该类计算阶乘的程序Check1。

编译并运行该程序,观察运行结果,体会方法的参数的传递和返回值的用法。

在调用时改变参数的个数和类型,看看编译时会得到什么信息。

class Fact{float fact(int n)//定义计算n!的方法{inti;float x=1;for(i=1;i

(10));//计算10!System.out.println(x.fact

(15));//计算15!}}2.下面给出了一个矩形类Rectangle,其中含有多个构造方法。

上机编译并运行此程序,观察运行结果,体会其中不同构造方法的设计和使用。

class Rectangle{private int width;privateint length;//下面是类Rectangle的三个构造方法Rcectangle()//此构造方法无参数,缺省地给出长

(30)和宽

(20){length=30;width=20;}Rectangle(int1,intw)//此构造成方法给出长和宽{length=1;width=w;}Rectangle(Rectangle r)//此构造方法以另一个Rectangle作为参数{width=r.width();length=r.length();}int width()//返回宽度{return width;}intlength()//返回长度{return length;}}public classCRctngle{public staticvoid main(String args[]){Rectangle x1=new Rectangle();Rectangle x2=new Rectangle(50,40);Rectangle x3=new Rectangle(xl);System.out.println(x1.length());System.out.println(x1.width());System.out.println(x2.length());System.out.println(x2.width());System.out.println(x3.length());System.out.println(x3.width());}}3.参照上面的程序,自己编写一个包含圆类的程序,并为圆类设计几个构造方法,编译并运行你的程序。

提高1.编译运行下面的程序,观察分析运行结果,注意对象作为方法参数的用法。

Class Int{int n;}class SetValue{void setValue(Int n1,int n2)//n1是对象作为参数,n2是基本数据类型作为参数//本方法中试图改变这两个参数的值{n1.n=2*n1.n;n2.n=2*n2;}}class ObAsPDemo{public staticvoid main(String args[]){Int n1=new Int();int n2;SetValue Demo=new SetValue();n1.n=10;n2=10;System.out.println(″Before setValue″);System.out.println(″n1.n=″+n1.n);System.out.println(″n2=″+n2);Demo.setValue(n1,n2);System.out.println(″After setValue″);System.out.println(″n1.n=″+n1.n);//此值改变了System.out.println(″n2=″+n2);//此值未改变}}2.对上面Fact方法作相应的修改,利用对象作为参数,得到阶乘的值。

(提示将上面Fact方法的参数个数增加为两个,其中一个参数的类型设为类类型;方法的返回值类型改为void。

)要求

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

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

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

实验九组件的创建和安放

一、实验课时3课时。

二、实验目的1.掌握Swing组件的创建过程。

2.了解组件不能直接安入在frame上,而应放在其内容窗格中。

3.学会组件属性的设置。

三、实验内容和要求1.编译运行给出的程序段(简单图形界面)/*Exam9.1*/import javax.swing.*;import java.awt.*;import java.awt.event.*;public classFrameDempl{public staticvoid main(String args[]){//创建一个容器类组件frame Jframeframe=new Jframe(″Exam10.1″);//获得其内容窗格Container c=frame.getContentPane();c.setLayout(new FlowLayout());//创建几个组件Jlabel1b=new JLabel(″FrameDemo″);//标签JTextField tf=new JTextField(″TextFiel

展开阅读全文

java实验指导书 eclipse_《Java语言程序设计实验指导书》实验指导书.doc相关推荐

  1. 潍坊学院c语言试卷,潍坊学院《C语言程序设计》课程(0212002)实验大纲.

    潍坊学院<C语言程序设计>课程(0212002)实验大纲. 潍坊学院<C语言程序设计>课程(0212002)实验大纲适用专业:计算机科学与技术专业:实验学时:16 学时 一.实 ...

  2. java语言程序设计第二版 张思民_java语言程序设计(张思民编著)习题答案.doc

    java语言程序设计(张思民编著)习题答案.doc 1第1章JAVA概述[1]为什么说JAVA的运行与计算机硬件平台无关解答JAVA编译器能够产生一种与计算机体系结构无关的字节指令BYTECODE,只 ...

  3. c语言的简单程序设计实验报告,工程学院C语言程序设计实验报告

    <工程学院C语言程序设计实验报告>由会员分享,可在线阅读,更多相关<工程学院C语言程序设计实验报告(5页珍藏版)>请在人人文库网上搜索. 1.南京工程学院实验报告课程名称C 语 ...

  4. c语言程序设计编程解读,C语言程序设计第三次实验报告解读

    <C语言程序设计第三次实验报告解读>由会员分享,可在线阅读,更多相关<C语言程序设计第三次实验报告解读(15页珍藏版)>请在人人文库网上搜索. 1.C语言程序设计实验报告专业 ...

  5. c语言实验设备管理系统设计作业,c语言程序设计实验设备管理系统

    c语言程序设计实验设备管理系统 1 苏州市职业大学继续教育学院 课 程 设 计 说 明 书 名称 C 语言程序设计课程设计 2012 年 10 月 31 日至 2012 年 11 月 14 日共 2 ...

  6. c语言习题与实验doc,[教材]C语言程序设计习题与上机实验(全部答案).doc

    [教材]C语言程序设计习题与上机实验(全部答案).doc 打伪辨笑坠发淤谢躬石眉侯抄纺箍塘妓愚离结船篙傅逻匆滔侯疹腮初粕羞骑躺童沂锡泵糙闰恃轰却蚕磨餐淌滇颊趁模整驶突献牺嫉工丢擦蔚锗磁途伊惭母拒羌本码 ...

  7. c语言程序设计(西安理工大学),C语言程序设计-西安理工大学三电实验教学中心!.doc...

    C语言程序设计-西安理工大学三电实验教学中心! 目录 电工技术基础1 电子技术基础4 数字电子技术基础7 模拟电子技术基础9 C语言程序设计11 计算机软件基础14 电路(1)18 数字电子技术21 ...

  8. c程序语言第四版实验报告,C语言程序设计第四次实验报告

    C语言程序设计第四次实验报告 姓名:熊毅 实验地点:家 实验时间:2020.04.09 实验项目: 5.3.1练习2 求数列的前n项和 5.3.2练习2 求水仙花数 5.3.4 十进制转换 5.3.5 ...

  9. C语言程序设计:综合设计实验一(设计一个文字游戏)

    文章目录 C语言程序设计:综合设计实验一(设计一个文字游戏) 1.实验要求 2.设计思路 3.源码 4.后话 C语言程序设计:综合设计实验一(设计一个文字游戏) 1.实验要求 (1) 设计一个文字游戏 ...

  10. c语言程序设计 链表,c语言程序设计基于链表的学生成绩管理系统.doc

    c语言程序设计基于链表的学生成绩管理系统 华北科技学院计算机系综合性实验报告 PAGE 第 PAGE 10 页 华北科技学院计算机系综合性实验 实 验 报 告 课程名称 C语言程序设计 实验学期 20 ...

最新文章

  1. TikTok广告投放指南(基础入门)
  2. python基础知识~ 等值判断和码
  3. iphone屏蔽系统更新_iPhone手机经常提示更新系统,教你一招关闭方法,学到了
  4. COM_ASET check in CRM Middleware inbound scenario
  5. 超火GitHub项目!一夜获得5000星,竟是微软开源的计算器
  6. 作者:朱扬勇(1963-),男,博士,复旦大学计算机科学技术学院教授、学术委员会主任,上海市数据科学重点实验室主任。...
  7. 又来Hello World了,Hello Python
  8. remote connect openshift mysql
  9. 第四篇 NumPy基础:数组和⽮量计算
  10. 模糊综合评价的 matlab,模糊综合评价法代码matlab
  11. CTF 栅栏加密解密----python代码实现
  12. n维椭球体积公式_【栗子资料】高中生必看,高中年级所有数学公式大全
  13. 财务数据人一定要懂的分析方法——杜邦分析法
  14. 从14连号概率题来看“做学问不知足”
  15. OpenCV读取海康4G摄像头
  16. Lens5 指南:专为Kubernetes人员设计的IDE
  17. data mining (foreign blogs)
  18. RNC/SGSN/PDP/IUPS概念
  19. 统一配置中心对比介绍
  20. 计算机应用基础上机考试,《计算机应用基础》上机考试试题.文件.doc

热门文章

  1. Win10 封装报错处理
  2. msm8953 单独编译bootloader、kernel和system,以及采用adb fastboot下载镜像的方法
  3. 多普勒优化的非匹配滤波器
  4. PHP实现生成二维码的示例代码
  5. windos10专业版激活(可用)
  6. 简单实用口才训练方法集
  7. SkeyePlayer rtsp、rtmp低延迟播放器源码解析之64位编译方案
  8. GD32F407RTC备份寄存器BKP的使用
  9. landsat8简介
  10. 【深度首发】图森未来CEO陈默:我们并非在主机厂上游兜售技术,而是立足下游,做卡车运输业的智能服务商丨Xtecher 封面