java 实验报告

更新时间:2024-07-04 03:34:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

工学院计算机系 Java程序设计 实验指导

长江职业学院

JAVA语言程序设计实验指导书

专 业: 学 号: 姓 名: 班 级: 指导 老师:

软件教研室 编

1

工学院计算机系 Java程序设计 实验指导

实验一 顺序结构程序设计

一、实验目的

通过本次实验,同学们应该初步掌握Java程序开发过程,Java顺序结构程序设

计的方法掌握Java程序开发的一般步骤。同时初步了解JCreator3.50的集成开发环境(即IDE),了解JCreator3.50的集成开发环境(即IDE)有哪几部分组成,IDE的各个组成部分的作用又是什么。 二、实验内容

1、JCreator3.50的集成开发环境(即IDE) 2、Java程序开发过程。

3、编写一个将摄氏温度转换为华氏温度的程序,其转换公式如下: 华氏温度=(9/5)*摄氏温度+32

注意:必要的时候要进行数据类型的转换,否则(9/5)=1,那么(9/5)*摄氏温度就失去了意义。

4、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。输出计算结果,输出时要求有文字说明。请编程序。 三、实验步骤

第一:熟悉开发环境 1、 启动JCreator3.50。

2、 掌握JCreator3.50的集成开发环境(即IDE)有哪几部分组成,各个组成部分的作

用是什么,如何去使用等等。参考如下图:

第二:开始设计Java程序

2

工学院计算机系 Java程序设计 实验指导

1.新建文件

(1)选择[文件]菜单中的[新建文件]命令,出现如下图所示的新建文件向导对话框。

(2)在新建文件对话框中,在程序对话框中输入文件名。

(3)在新建Java应用程序对话框中输入要保存文件的路径,单击“完成”按钮。注:路径可以自己更改,如果这个路径不改,系统就自动保存在JCreator3.50的安装路径下,这是我们不提倡的,在使用这个工具前,先建好自己的文件夹,这对于程序员来说是非常重要的。 (3)输入如下的程序代码

3

工学院计算机系 Java程序设计 实验指导

public class myfirstapp{

public static void main(String args[]){

System.out.println(\哈哈!这是我第一个Java程序,我已基本掌握了Java程序的开发步骤\ } }

注:程序在编辑的过程中如输入错误,会有错误提示和关键字的选取,编辑比较方便。完成编辑后可以运行你的程序。 (4)运行程序 首先选择“生成”菜单中的编译项目命令进行编译,编译成功后会生成相应的.class字节码文件。

选中“生成”菜单的“执行”命令,就可以在输出窗口看到你的程序运行的结果。 第三:独立编写Java Application程序

1、编写一个将摄氏温度转换为华氏温度的程序,其转换公式如下: 华氏温度=(9/5)*摄氏温度+32 注意:

必要的时候要进行数据类型的转换,否则(9/5)=1,那么(9/5)*摄氏温度就失

去了意义。

2、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。输出计算结果,输出时要求有文字说明。请编程序。

四、思考练习

1. 如果创建Java应用程序的名称和输入的主类名不一致,看会出现什么后果? 2. Java程序开发有哪些步骤?

4

工学院计算机系 Java程序设计 实验指导

实验二 Java分支结构程序设计(一)

一、实验目的

通过本次实验,掌握Java的流程控制语句:顺序、分支语句的使用。并能熟练运

用if语句,switch语句解决实际问题。 二、实验内容

1.阅读程序写出执行结果。 2.编写判断输入的年份是否是闰年的程序,闰年的条件是能被4整除,但不能被100整除;能被4整除,又能被400整除。

3.给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。90分以上为A,81-89分为B,70-79分为C,60-69分为D,60分以下为E。说明:Character.toUpperCase(ch)可以把小写字母转换为大写字母。

4.任意给定3个正实数(a,b,c)作为三角形的三边,判断是否能组成三角形,若可以则输出它的面积。请编程。说明:Math.sqrt()方法为求平方根;a+b>c,a+c>b,b+c>a同时成立组成三角形;p=(a+b+c)/2; 面积=Math.sqrt(p*(p-a)*(p-b)*(p-c)) 三、实验步骤

1、启动JCreator3.50。

2、新建一个项目,项目名称为ch02,存放在自己建立的文件夹下。(具体操作步骤可以再复习一下实验一的内容)

3、通过选择[文件]菜单中的[新建文件]命令,实现创建Java运行程序。 四、阅读程序写出执行结果及程序的功能

通过选择[文件]菜单中的[新建文件]命令,实现以下实例内容。 通过练习并能熟练运用if语句,switch语句解决实际问题。 1、程序的功能及结果,并说明各语句的作用 源程序名: NumberSort .java public class NumberSort {

public static void main(String[] args) { int a=5,b=7,c=3,t; if(a>b)

{t=a;a=b;b=t;} if(a>c)

{t=a;a=c;c=t;} if(b>c)

{t=b;b=c;c=t;}

System.out.print(a+\

} }

五、独立编写Java Application程序

5

工学院计算机系 Java程序设计 实验指导

1.编写判断输入的年份是否是闰年的程序,闰年的条件是能被4整除,但不能被100整除;能被4整除,又能被400整除。

2.给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。90分以上为A,81-89分为B,70-79分为C,60-69分为D,60分以下为E。说明:Character.toUpperCase(ch)可以把小写字母转换为大写字母。

3.任意给定3个正实数(a,b,c)作为三角形的三边,判断是否能组成三角形,若可以则输出它的面积。请编程。说明:Math.sqrt()方法为求平方根;a+b>c,a+c>b,b+c>a同时成立组成三角形;p=(a+b+c)/2; 面积=Math.sqrt(p*(p-a)*(p-b)*(p-c))。

六、思考练习

1、根据输入的三角形的三边判断是否能组成三角形,若可以则输出它的面积和三角形的类型。

2、编写判断输入的年份是否是闰年的程序,闰年的条件是能被4整除,但不能被100整除;能被4整除,又能被400整除。要求用If语句的嵌套实现。

6

工学院计算机系 Java程序设计 实验指导

实验三 Java分支结构程序设计(二)

一、实验目的

通过本次实验,掌握Java的流程控制语句:顺序、分支语句的使用。并能熟练运

用if语句,switch语句解决实际问题。 二、实验内容

1.阅读程序写出执行结果。

2.给出一个百分制成绩,要求输入成绩等级A、B、C、D、E。输出指定的分数范围。 说明: 90分以上为A,81-89分为B,70-79分为C,60-69分为D,60分以下为E; Character.toUpperCase(ch)可以把小写字母转换为大写字母。

3.给定两个整数,当输入字符‘+’、‘-’、‘*’、‘/’时,分别计算x,y的和、差、积、商的程序。 三、实验步骤

1、启动NetBeans。

2、新建一个项目,项目名称为ch03,存放在自己建立的文件夹下。(具体操作步骤可以再复习一下实验一的内容)

3、通过选择[文件]菜单中的[新建文件]命令,实现创建Java运行程序。 四、阅读程序写出执行结果及程序的功能

通过选择[文件]菜单中的[新建文件]命令,实现以下实例内容。 通过练习并能熟练运用if语句,switch语句解决实际问题。 1、程序的功能及结果,并说明各语句的作用

源程序名: Calculator.java import java.io.*;

public class Calculator{

public static void main( String args[] ) throws IOException {

int x=10,y=5,z; char ch;

System.out.println(\ ch=(char)System.in.read(); switch(ch){ case '+': z=x+y;

System.out.println(\ case '-': z=x-y;

System.out.println(\ break; case '*':

7

工学院计算机系 Java程序设计 实验指导

z=x*y;

System.out.println(\ break; case '/': z=x/y;

System.out.println(\ break; default:

System.out.println(\ } } }

五、独立编写Java Application程序

1.给出一个百分制成绩,要求输入成绩等级A、B、C、D、E。输出指定的分数范围。 说明: 90分以上为A,81-89分为B,70-79分为C,60-69分为D,60分以下为E; Character.toUpperCase(ch)可以把小写字母转换为大写字母。

2.给定两个整数,当输入字符‘+’、‘-’、‘*’、‘/’时,分别计算x,y的和、差、积、商的程序。 六、思考练习

编写程序计算某年某月有几天。其中判别闰年的条件是:能被4整除但不能被100整除的年是闰年,能被400整除的年也是闰年。用switch语句实现。

8

工学院计算机系 Java程序设计 实验指导

实验四 Java循环结构程序设计(一)

一、实验目的

通过本次实验,掌握Java的循环语句for的使用,并能熟练运用该语句解决实际

问题。 二、实验内容

1.阅读程序写出执行结果。 2.编写判断输入的年份是否是闰年的程序,闰年的条件是能被4整除,但不能被100整除;能被4整除,又能被400整除。

3.给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。90分以上为A,81-89分为B,70-79分为C,60-69分为D,60分以下为E。说明:Character.toUpperCase(ch)可以把小写字母转换为大写字母。

4.任意给定3个正实数(a,b,c)作为三角形的三边,判断是否能组成三角形,若可以则输出它的面积。请编程。说明:Math.sqrt()方法为求平方根;a+b>c,a+c>b,b+c>a同时成立组成三角形;p=(a+b+c)/2; 面积=Math.sqrt(p*(p-a)*(p-b)*(p-c))。

三、实验步骤

1、启动NetBeans。

2、新建一个项目,项目名称为ch04,存放在自己建立的文件夹下。(具体操作步骤可以再复习一下实验一的内容)

3、通过选择[文件]菜单中的[新建文件]命令,实现创建Java运行程序。 四、阅读程序写出执行结果及程序的功能

通过选择[文件]菜单中的[新建文件]命令,实现以下实例内容。 通过练习并能熟练运用if语句,switch语句解决实际问题。 1、程序的功能及结果,并说明各语句的作用 源程序名: NumberSort .java public class NumberSort {

public static void main(String[] args) { int a=5,b=7,c=3,t; if(a>b)

{t=a;a=b;b=t;} if(a>c)

{t=a;a=c;c=t;} if(b>c)

{t=b;b=c;c=t;}

System.out.print(a+\

} }

9

工学院计算机系 Java程序设计 实验指导

2、程序的功能及结果,并说明各语句的作用 源程序名: Calculator.java package chapter04; import java.io.*;

public class Calculator{

public static void main( String args[] ) throws IOException {

int x=10,y=5,z; char ch;

System.out.println(\ ch=(char)System.in.read(); switch(ch){ case '+': z=x+y;

System.out.println(\ case '-': z=x-y;

System.out.println(\ break; case '*': z=x*y;

System.out.println(\ break; case '/': z=x/y;

System.out.println(\ break; default:

System.out.println(\ } } }

五、独立编写Java Application程序

1.编写判断输入的年份是否是闰年的程序,闰年的条件是能被4整除,但不能被100整除;能被4整除,又能被400整除。

2.给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。90分以上为A,81-89分为B,70-79分为C,60-69分为D,60分以下为E。说明:Character.toUpperCase(ch)可以把小写字母转换为大写字母。

3.任意给定3个正实数(a,b,c)作为三角形的三边,判断是否能组成三角形,若

10

工学院计算机系 Java程序设计 实验指导

可以则输出它的面积。请编程。说明:Math.sqrt()方法为求平方根;a+b>c,a+c>b,b+c>a同时成立组成三角形;p=(a+b+c)/2; 面积=Math.sqrt(p*(p-a)*(p-b)*(p-c))。

六、思考练习

1、根据输入的三角形的三边判断是否能组成三角形,若可以则输出它的面积和三角形的类型。

2、编写判断输入的年份是否是闰年的程序,闰年的条件是能被4整除,但不能被100整除;能被4整除,又能被400整除。要求用If语句的嵌套实现。

11

工学院计算机系 Java程序设计 实验指导

实验五 Java循环结构程序设计(二)

一、实验目的

通过本次实验,掌握Java的三种流程控制语句:顺序、分支、循环语句的使用。 二、实验内容

1.阅读程序写出执行结果及程序的功能

2.编程把100~200之间的能被3整除的数输出。 3.编程求1+2!+3!+…+20! 的和。

4.如果一个3位数的个位数、十位数和百位数的立方和等于该数自身,则称该数为水仙花数。编程求出所有的水仙花数。 三、实验步骤

1、启动NetBeans。

2、新建一个项目,项目名称为ch05,存放在自己建立的文件夹下。

3、通过选择[文件]菜单中的[新建文件]命令,实现创建Java运行程序。 四、阅读程序写出执行结果及程序的功能

通过选择[文件]菜单中的[新建文件]命令,实现以下实例内容。 通过练习掌握Java控制语句( while、 do-while、for)正确的使用。 1、程序的功能及结果,并说明各语句的作用 源程序名:ReturnDemo .java

public class ReturnDemo {

public static void main(String[] args) { int a=5,t;

t=sum(a);//调用sum方法 System.out.println(\ }

static int sum(int x) {

if(x==1) return 1; else

return(sum(x-1)+x);//递归调用 } }

2、程序的功能及结果,并说明各语句的作用 源程序名:FactorialDemo.java package ch05;

public class FactorialDemo {

public static void main(String[] args) {

12

工学院计算机系 Java程序设计 实验指导

int a=5; long t;

t=ff(a);//调用ff方法

System.out.println(\}

static long ff(int n) { long f=0;

if(n<0) System.out.println(\ else if(n==0||n==1) f=1; else f=ff(n-1)*n; return(f); } }

五、独立编写Java Application程序

1.编程把100~200之间的能被3整除的数输出。 2.编程求1+2!+3!+…+20! 的和。

3.如果一个3位数的个位数、十位数和百位数的立方和等于该数自身,则称该数为水仙花数。编程求出所有的水仙花数。 六、思考练习

3、 p.51[例2.10]中的sum方法使用了递归,请问是否可以改为使用循环?如何改? 4、 实验内容3(水仙花数),如果要把求水仙花数写成方法,该如何改?

13

工学院计算机系 Java程序设计 实验指导

实验六 Java综合运用

一、实验目的

通过本次实验,能够根据实际问题正确使用循环的嵌套, break语句和continue

语句解决实际编程问题。掌握Java的三种流程控制语句:顺序、分支、循环语句的综合应用能力。 二、实验内容

1.阅读程序写出执行结果及程序的功能

2.编写程序,找出50~100之间的所有素数。 3.编写程序,输出以下图案。

* *** ***** ******* 三、实验步骤

1、启动JCreator3.50。

2、新建一个项目,项目名称为ch06,存放在自己建立的文件夹下。

3、通过选择[文件]菜单中的[新建文件]命令,实现创建Java运行程序。 四、阅读程序写出执行结果及程序的功能

通过选择[文件]菜单中的[新建文件]命令,实现以下实例内容。 通过练习能够根据实际问题正确使用循环的嵌套, break语句和continue语句解决实际编程问题。

1、程序的功能及结果,并说明各语句的作用 源程序名:Parallelogram .java public class Parallelogram {

public static void main(String[] args) { int i,j,k;

for(i=0;i<=3;i++) {for(j=0;j<=2-i;j++) System.out.print(\ for(k=0;k<=5;k++)

System.out.print(\ System.out.print(\ } } }

五、独立编写Java Application程序

14

工学院计算机系 Java程序设计 实验指导

1.编写程序,找出50~100之间的所有素数。 2.编写程序,输出以下图案。

* *** ***** *******

六、思考练习

5、 在编写输出三角型图案程序的基础上,编写输出菱形型图案的程序。输出以下图

案。

* *** ***** ******* ***** *** *

15

工学院计算机系 Java程序设计 实验指导

实验七 对象、构造和使用类

一、实验目的

通过本次实验,掌握规范的类定义形式、能正确的创建对象和使用对象。 二、实验内容

1.通过类定义和对象的创建、使用,实现输出如下个人信息:“刘阳,男,身高170.0cm。” 算法分析:

1)定义一个People类,类体内容的变量定义部分定义了1个double类型变量 “sg” (身高)、两个字符串类型变量“xm” (姓名)、 “xb” (性别),和一个方法“rwjj” (人物简介)用来输出个人信息。

2)定义一个主类PeopleDemo,并在主类中调用缺省构造方法定义一个People类的对象xPeople,要求调用rwjj方法输出以下语句“刘阳,男,身高170.0cm。” 2.使用构造方法的实验。 算法分析:

1)在People类中增加一个带参数的构造方法,要求能够接收xm、xb和sg信息。 2)在主类PeopleDemo中调用该构造方法定义对象yPeople,输出信息如下:“李莉,女,身高165cm。” 三、实验步骤

1、启动JCreator3.50。

2、新建一个项目,项目名称为ch07,存放在自己建立的文件夹下(文件夹名为学号+姓名的拼音,例如01xuting)。

3、通过选择[文件]菜单中的[新建文件]命令,实现创建Java运行程序。 四、通过类定义和对象的创建、使用,实现输出如下个人信息:“刘阳,男,身高170.0cm。”

通过选择[文件]菜单中的[新建文件]命令,实现以下实例内容。 通过练习掌握规范的类定义的形式。

源程序名:PeopleDemo .java,以下操作均在PeopleDemo .java中实现! 1.定义一个People类,类体内容的变量定义部分定义了1个double类型变量 “sg” (身高)、两个字符串类型变量“xm” (姓名)、 “xb” (性别),和一个方法“rwjj” (人物简介)用来输出个人信息。

源代码如下:

package ch07;

class People{//定义People类 double sg;

String xm,xb;//定义成员变量

People(){//定义不带参数的构造方法 }

void rwjj(){//定义输出个人信息的成员方法

System.out.println(xm+\身高\。\

16

工学院计算机系 Java程序设计 实验指导

} }

2.定义一个主类PeopleDemo,并在主类中调用缺省构造方法定义一个People类的对象xPeople,要求调用rwjj方法输出以下语句“刘阳,男,身高170.0cm。” 源代码如下:

public class PeopleDemo {//定义PeopleDemo类 public static void main(String args[]) {

People xPeople=new People();//定义People类的对象xPeople //给xPeople对象的各个成员变量赋值

xPeople.sg=170;

xPeople.xm=\刘阳\ xPeople.xb=\男\

//调用rwjj()方法输出xPeople的个人信息 xPeople.rwjj(); } }

五、使用构造方法的实验。

1.在People类中增加一个带参数的构造方法和,要求能够接收xm、xb和sg信息。 源代码如下:

People(double sg1,String xm1,String xb1){ sg=sg1; xm=xm1; xb=xb1; }

2.在主类PeopleDemo中调用该构造方法定义对象yPeople,输出信息如下:“李莉,女,身高165cm。” 源代码如下:

People yPeople=new People(165,\李莉\女\yPeople.rwjj();

六、思考练习

6、 比较一下使用带参数的构造方法和使用缺省的不带参数的构造方法的区别。 7、 先定义一个计算计算圆的面积的类Area,该类中有getarea方法可以根据输入的

半径用来计算圆的面积。然后在主类AreaDemo中将Area类实例化输出圆的面积。

17

工学院计算机系 Java程序设计 实验指导

实验八 类的封装性的运用

一、实验目的

通过本次实验,掌握私有变量的getter和setter方法的正确使用。 二、实验内容

1.程序改错,掌握通过定义getter方法正确返回私有变量的值。 算法分析:

1)定义一个Employee类,在该类中定义了三个私有成员变量name、salary和id分别用来记录员工的姓名、薪水和员工编号信息,还定义了一个带参数的构造方法用来初始化员工的姓名、薪水和员工编号信息。

2)定义主类TestPrivateDemo,在主类中调用带参数的构造方法生成一个对象e,并输出该对象的姓名、员工编号和薪水信息。输出信息如下:“员工编号:1,姓名:张三,年薪: 50000.0”。

2. 自行编程,掌握通过定义setter方法,正确设置私有变量值的方法。 算法分析:

1)在Emplyee类中定义可以设置name、salary和id变量值的setter方法。

2)在主类TestPrivateDemo中,通过调用三个setter方法重新设置三个成员变量的值,并输出下列信息:“员工编号:2,姓名:李四,年薪:25000.0”。

三、实验步骤

1、启动JCreator3.50。

2、新建一个项目,项目名称为ch08,存放在自己建立的文件夹下(文件夹名为学号+姓名的拼音,例如01xuting)。

3、通过选择[文件]菜单中的[新建文件]命令,实现创建Java运行程序。 四、程序改错,掌握通过定义getter方法正确返回私有变量的值。

指出下列程序的所有错误,并改正。

通过选择[文件]菜单中的[新建文件]命令,输入改正以后的源代码。

源程序名:TestPrivateDemo .java,以下操作均在TestPrivateDemo .java中实现! class Employee//定义Employee类,用来记录员工的姓名、薪水和员工编号信息 {

private String name; private double salary; private int id;

public Employee(String n, double s,int id1) {

name = n; salary = s; id = id1; }

18

工学院计算机系 Java程序设计 实验指导

}

public class TestPrivateDemo{//定义主类TestPrivateDemo,输出员工信息 public static void main(String[] args) {

Employee e = new Employee(\张三\

System.out.println(“员工编号:”+e.id+”,姓名:”e.name + \的年薪是 \ } }

提示:要使用私有变量的值必须通过定义getter方法,然后使用getter方法来实现。例如要使用私有变量id的值,可以通过下面的方法实现: 首先,在Employee类中定义下列方法: public int getId() {

return id; }

然后,在主类TestPrivateDemo中,在输出语句中则将e.id改成e.getId()即可。 使用其余私有变量name和salary的值的方法请模仿上面的方法自行完成。 五、自行编程,掌握通过定义setter方法,正确设置私有变量值的方法。

以下操作均在TestPrivateDemo .java中实现!

1.在Emplyee类中定义可以设置name、salary和id变量值的setter方法。 设置私有变量id的值的源代码如下: public void setId(int id1) {

id=id1; }

设置其余私有变量name和salary的值的方法请模仿上面的方法自行完成。

2.在主类TestPrivateDemo中,通过调用三个setter方法重新设置三个成员变量的值,并输出下列信息:“员工编号:2,姓名:李四的年薪是 6000.0”。此部分请自行完成。 六、思考练习

模仿上述程序,编写一个可以设置并输出学生学号、姓名、班级和总成绩的程序,其中学号、姓名、班级、总成绩请定义为私有成员变量。

19

工学院计算机系 Java程序设计 实验指导

实验九 类的继承的运用

一、实验目的

通过本次实验,掌握类的继承实现方法,能根据实际需要适当的运用类的继承性。 二、实验内容

1. 完成〔例9.1〕的程序。

2. 在实验八 类的封装性的运用中,完成了一个可以设置和输出员工信息的程序,现在要在此基础上进行改进,要求增加能设置和输出公司经理信息的程序,具体要求如下:

1)公司经理的薪水是基本工资与奖金之和。 2)增加一个可以设置和输出职务信息的功能。 3)其余信息项与普通员工一致。 算法分析:

1)定义父类Employee,Employee中中定义可以设置和获取name、salary和id变量值的setter方法和getter方法。

2)定义子类Manager,Manager中覆盖父类的getSalary()方法,使得最后的工资是基本工资和奖金之和。

3)在子类Manager中再定义一个可以设置职务信息的setter方法,同时定义一个可以获取职务信息的getter方法。

4)在主类TestInheritanceDemo中,先创建父类Employee的一个对象,并通过通过调用三个setter方法重新设置三个成员变量的值,并输出下列信息:“员工编号:1,姓名:王笑,年薪:20000.0”。然后创建子类Manager的一个对象,并通过调用四个setter和getter方法,输出下列信息:“员工编号:2,姓名:李东,职务:经理,年薪:50000.0”

三、实验步骤

1、启动JCreator。

2、新建一个项目,项目名称为ch09,存放在自己建立的文件夹下(文件夹名为学号+姓名的拼音,例如01xuting)。

3、通过选择[文件]菜单中的[新建文件]命令,实现创建Java 运行程序。完成〔例9.1〕的程序。

4、通过选择[文件]菜单中的[新建文件]命令,实现创建Java Application程序。源程序名:TestInheritanceDemo .java,以下操作均在TestInheritanceDemo .java中实现! 1)定义父类Employee,Employee中中定义可以设置和获取name、salary和id变量值的setter方法和getter方法。

源代码如下:

class Employee//定义Employee类,用来记录员工的姓名、薪水和员工编号信息 {

private String name; private double salary;

20

工学院计算机系 Java程序设计 实验指导

private int id;

public Employee(String n, double s,int id1) {

name = n; salary = s; id = id1; }

public String getName() {

return name; }

public void setName(String name1) {

name=name1; }

public void setSalary(double salary1) {

salary=salary1; }

public double getSalary() {

return salary; }

public int getId() {

return id; }

public void setId(int id1) {

id=id1; } }

21

工学院计算机系 Java程序设计 实验指导

2)定义子类Manager,Manager中覆盖父类的getSalary()方法,使得最后的工资是基本工资和奖金之和。在子类Manager中再定义一个可以设置职务信息的setter方法,同时定义一个可以获取职务信息的getter方法。 源代码如下:

class Manager extends Employee//定义Manager类,用来记录经理的姓名、薪水和员工编号信息 {

private String duty;//设置职务的成员变量 private double bonus;//设置奖金的成员变量

public Manager(String n, double s,int id1,String d) {

super(n,s,id1); duty=d; bonus=0; }

public String getDuty() {

return duty; }

public void setDuty(String duty1) {

duty=duty1; }

public void setBonus(double b)//设置奖金的方法 {

bonus=b; }

public double getSalary()//覆盖父类的getSalary()方法 {

double baseSalary=super.getSalary(); return baseSalary+bonus; } }

3)在主类TestInheritanceDemo中,先创建父类Employee的一个对象,并通过通过调用三个setter方法重新设置三个成员变量的值,并输出下列信息:“员工编号:1,姓名:

22

工学院计算机系 Java程序设计 实验指导

王笑,年薪:20000.0”。然后创建子类Manager的一个对象,并通过调用四个setter和getter方法,输出下列信息:“员工编号:2,姓名:李东,职务:经理,年薪:50000.0”。 源代码入下:

public class TestInheritanceDemo {

/** Creates a new instance of TestInheritanceDemo */ public TestInheritanceDemo() { }

public static void main(String args[]){

Employee e = new Employee(\张三\ e.setName(\王笑\ e.setId(1);

e.setSalary(20000);

System.out.println(\员工编号:\,姓名:\+ \年薪: \+ e.getSalary());

Manager m = new Manager(\李四\经理\ m.setName(\李东\ m.setId(2);

m.setBonus(30000);

System.out.println(\员工编号:\,姓名:\+ \职务: \+m.getDuty()+\年薪: \ } }

四.思考练习

1.设计一个Dog类,有名字、颜色、年龄等属性,定义构造方法用来初始化类的这些属性,定义方法输出Dog的信息。编写应用程序使用Dog类。

2.定义一个接口ClassName,接口中只有一个抽象方法getClassName( ).设计一个类Horse,该类实现接口ClassName中的方法getClassName( ),功能是获取该类的leiming。编写应用程序使用Horse类。

23

工学院计算机系 Java程序设计 实验指导

实验十 类的多态性的运用

一、实验目的

通过本次实验,掌握类的多态的实现方法,能根据实际需要适当的运用类的多态

的实现方法。 二、实验内容

1. 通过一个计算圆的面积的实例,掌握类的继承与方法覆盖的运用。 算法分析:

1)定义一个父类Area,该类中有getarea方法根据输入半径用来计算圆的面积。 2)定义子类Circle,该子类在继承父类已有功能的基础上覆盖了getarea方法,返回半圆的面积。

3)定义主类AreaDemo,在主类AreaDemo中分别将父类和子类实例化,分别输出圆和半圆的面积。 2.成员方法重载的实验。 算法分析:

1) 定义一个名为IntSort的类,在该类中定义了两个同名方法sort分别实现对2

个整数和3个整数按从大到小的顺序输出的功能。

2)定义主类OverloadDemo,在主类OverloadDemo中,通过调用两个sort方法来实现对2个数和3个数的排序。 三、实验步骤

1、启动JCreator3.50。 2、新建一个名为chapter10的工程,保存路径在为“D:\\学号+姓名(用拼音)\\ chapter10”文件夹下。

3、通过选择[文件]菜单中的[新建文件]命令,实现创建Java运行程序。 四、通过一个计算圆的面积的实例,掌握类的继承与方法覆盖的运用。

通过选择[文件]菜单中的[新建文件]命令,实现以下实例内容。 源程序名:AreaDemo .java,以下操作均在AreaDemo .java中实现!

1.定义一个父类Area,该类中有getarea方法根据输入的半径用来计算圆的面积。

源代码如下:

package ch08; class Area{

float r;

float getArea(){ float s;

s=3.14f*r*r; return s; }

}

2.定义子类Circle,该子类在继承父类已有功能的基础上覆盖了getarea方法,返回半圆

24

工学院计算机系 Java程序设计 实验指导

的面积。

源代码如下:

class Circle extends Area{ float getArea(){ float s;

s=3.14f*r*r/2.0f; return s; }

//子类覆盖父类方法,返回半圆面积 }

3.定义主类AreaDemo,在主类AreaDemo中分别将父类和子类实例化,分别输出圆和半圆的面积。

public class AreaDemo {

/** Creates a new instance of AreaDemo */ public AreaDemo() { }

public static void main(String args[]){ //生成父类对象,并输出圆面积 Area a=new Area(); a.r=5.0f;

System.out.println(\的面积为:\ //生成子类对象,并输出半圆面积 Circle b=new Circle(); b.r=6.0f;

System.out.println(\的面积为:\ } }

五、成员方法重载的实验。

通过选择[文件]菜单中的[新建文件]命令,实现以下实例内容。

源程序名:OverloadDemo .java,以下操作均在OverloadDemo .java中实现!

1.定义一个名为IntSort的类,在该类中定义了两个同名方法sort分别实现对2个整数和3个整数按从大到小的顺序输出的功能。

两个数的排序源代码如下: public String sort(int a,int b){ if(a>b)

return a+\ \ else

return b+\ \

25

工学院计算机系 Java程序设计 实验指导

}

三个数的排序请模仿上述代码自行完成。

2.定义主类OverloadDemo,在主类OverloadDemo中,通过调用两个sort方法来实现对2个数和3个数的排序。 调用两个数排序方法源代码如下: public class OverloadDemo {

public static void main(String[] args) { int a=12,b=34;

IntSort s=new IntSort();

System.out.println (\两个数的排序结果是:\} }

三个数排序方法的调用请模仿上述代码自行完成。 六、思考练习

8、 在类的继承实验中再定义一个Circle类的子类Sphere,该子类中实现覆盖Circle类的getArea()方法,计算球体的面积,在主类AreaDemo中将Sphere类实例化后输出球体面积。提示:球体面积计算公式为:s= 4πR2 9、 对方法重载实验进行修改,实现可以从键盘输入参与排序的数字,文件名保存为

OverLoadDemo1.java。

26

工学院计算机系 Java程序设计 实验指导

实验十一 静态变量和方法的运用 实例变量和方法的运用

一、实验目的

通过本次实验,掌握static修饰符的正确使用。 二、实验内容

1. 程序改错。通过改正错误的程序,理解static修饰符使用规则。 2. 通过程序填空,掌握类方法的定义和使用。

3.通过阅读程序,写出程序结果,掌握类变量的使用。 三、实验步骤

1、启动JCReator3.50。 2、新建一个名为chapter11的工程,保存路径在为“D:\\学号+姓名(用拼音)\\ chapter11”文件夹下。

3、通过选择[文件]菜单中的[新建文件]命令,实现创建Java运行程序。 四、程序改错,通过改正错误的程序,理解static修饰符使用规则。

指出下列程序的所有错误,并改正。

通过选择[文件]菜单中的[新建文件]命令,输入下列源代码。 源程序名:Exercise1 .java。 public class Exercise1{ int i=20; public static void main (String args[]){ System.out.println(\ } }

提示:

改正方法1,将实例变量i改成类变量,因为在没有创建对象时,类方法只能使用类变量。将改正后的源程序命名为Exercise2.java。

改正方法2,先创建一个类的实例,再使用实例变量i。将改正后的源程序命名为Exercise3.java。

五、程序填空,掌握类方法的定义和使用。

通过选择[文件]菜单中的[新建文件]命令,输入下列源代码,将标有*那一行用源代码替代。

源程序名:CalDemo.java。 class Simple{ static void go(){

System.out.println(\这是测试调用类方法的程序!\ } }

public class CalDemo{

public static void main(String[] args){

27

工学院计算机系 Java程序设计 实验指导

**************** //调用Simple类的go()方法 } }

提示:调用类方法有两种形式,第一,可以用类名直接调用,第二,可以先生成类的对象再调用该方法。

六、通过阅读程序,写出程序结果,掌握类变量的使用。 阅读下列程序,写出程序运行结果: 1.第一条输出语句输出结果应为:

v1.c=() v1.i=() v2.c=() v2.i=() 2.第二条输出语句输出结果应为:

v1.c=() v1.i=() v2.c=() v2.i=()

3.通过选择[文件]菜单中的[新建文件]命令,输入下列源代码验证程序运行结果。源程序名:CountDemo.java。

4.这两条输出结果反映了类变量和实例变量的什么区别? class Value{

static int c=0;//定义类变量c int i;//定义实例变量i

static void inc(){//定义将c自加的类方法inc() c++; }

void inci(){//定义将i自加的类方法inci() i++; } }

public class CountDemo{

public static void main(String[] args){ Value v1,v2; v1=new Value(); v2=new Value(); v1.i=15; v2.i=20;

System.out.println (\ v1.i=\ v2.c=\ v2.i=\ v1.inc(); v1.inci();

System.out.println (\ v1.i=\ v2.c=\ v2.i=\ } }

28

工学院计算机系 Java程序设计 实验指导

实验十二 Java包和接口的应用

一、实验目的

通过上机实验,学习掌握package程序包的创建和使用。掌握接口的概念,学会使用接口的定义,继承接口,实现接口。 二、实验内容

a) 模拟编写Java Application程序。

b) 模仿课本P90【例4.1】定义一个名为Stu包,在这个包中定义一个实现显示学生

的学号、姓名、性别和班级的Student类;然后定义另一个引用Stu包的类,在这个类中用Stu包中的Student类生成一个对象。 c) 定义接口,继承接口,实现接口的实验。 三、实验步骤 第一:新建一个名为chapter13的工程,保存路径在为“D:\\学号+姓名(用拼音)\\ chapter13”文件夹下。

第二:包的创建与使用。 算法分析:

先在两个java源文件中分别定义了两个包,并且在第1个包中定义了一个MyClass1类,在第2个包中定义了一个MyClass2类。

在第三个java源文件的主类TestPackage中分别引用前面定义的两个包,并分别将MyClass1类和MyClass2类实例化。

1、在该工程中新建一个java源文件,并输入如下代码: package Mypackage; //定义包Mypackage

public class MyClass1 { //定义类MyClass1

public void show() {

System.out.println(\这是类MyClass1\ } }

2、在该工程中再新建一个java源文件,并输入如下代码:

package Mypackage.Mypackage1; //定义包Mypackage.Mypackage1

public class MyClass2 { //定义类MyClass2

public void show(){

System.out.println(\这是类MyClass2\ } }

3、在该工程中再新建一个java源文件,并输入如下代码:

29

工学院计算机系 Java程序设计 实验指导

import Mypackage.*;

import Mypackage.Mypackage1.*; public class TestPackage {

public static void main(String[] args) {

//用包Mypackage中定义的类MyClass1生成对象 MyClass1 obj1=new MyClass1();

//用包Mypackage.Mypackage1中定义的类MyClass2生成对象 MyClass2 obj2=new MyClass2(); obj1.show() ; obj2.show(); } }

4、编译运行程序,查看运行结果。

第三:定义一个名为stu包,在这个包中定义一个实现显示学生的学号、姓名、性别和班级的Student类;然后定义另一个引用stu包的类,在这个类中用stu包中的Student类生成一个对象。

第四:定义接口,继承接口,实现接口的实验。

1、 在chapter11的工程下再新建一个java文件InterfaceDemo.java。

2、 在该文件的适当位置上定义一个接口Runner。Runner包括一个常量ID=1,和一

个抽象方法run()。

3、 定义一个接口Animal,继承自Runner,在Animal里增加一个抽象方法breathe()。 4、 定义一个类Fish,实现接口Animal。

5、 在main方法中对Fish产生实例化对象,进行运用。 参考的代码: interface Runner {

int ID=1; void run(); }

interface Animal extends Runner {

void breathe(); }

class Fish implements Animal {

30

工学院计算机系 Java程序设计 实验指导

public void run() {

System.out.println(\}

void breathe() //这里会出现一个错误,必须在前面加上public,想一想,为什么? {

System.out.println(\}

}

class InterfaceDemo {

public static void main(String args[]) {

Fish f1=new Fish(); f1.run(); f1.breathe();

f1.ID=2; //这里也出错,想一想,为什么? } }

31

工学院计算机系 Java程序设计 实验指导

实验十三 字符串处理及向量

一、实验目的

通过本次实验,掌握Java中关于字符串处理的两个类String类和StringBuffer类的使

用方法。 二、实验内容

a) 通过程序改错,掌握String类和StringBuffer类中一些常用方法。 b) 通过编程练习,进一步掌握字符串处理类的使用方法。 三、实验步骤

第一:新建一个名为chapter16的工程,保存路径在为“D:\\学号+姓名(用拼音)\\ chapter16”文件夹下。

第二:程序改错。

下面程序实现的是字符串的创建以及字符串中一些常见方法的使用。将程序中的错误改正,使之能显示出正确的结果。

算法分析:

1) String类的主要构造函数有四种。 package ch05;

public class StringExam {

public static void main(String args[]) {

String s1=new String(This is an demo of the String method.); char c[]={'a','b','c'};

String s2=new String(c[]); String s3=new String(c[],0,2); System.out.println(\ System.out.println(\ System.out.println(\

System.out.println(\

System.out.println(\s1.substring (11,15)); } }

第三:编程题。

利用下面的关键代码编写一个完整的程序,理解StringBuffer类的使用。 StringBuffer sb=new StringBuffer(\ sb.append(\ sb.insert(12,\ System.out.println(sb);

32

工学院计算机系 Java程序设计 实验指导

System.out.println(sb.charAt(0)); sb.setCharAt(0,'h');

System.out.println(sb.charAt(0)); System.out.println(sb);

四、思考练习

a) 字符数组,字符串数组,字符串三者有什么区别?

b) 字符串是否相等的比较是如何实现的?假如要求验证用户从键盘输入的字符串

是“good”,该如何实现,自己动手试一下。

33

工学院计算机系 Java程序设计 实验指导

实验十四 Java异常处理的应用

一、实验目的

通过上机实验,学习掌握简单异常处理的使用。 二、实验内容

a) 通过实验掌握简单的异常处理方法。 b) 能进行关于异常处理的程序改错。 三、实验步骤

第一:新建一个名为chapter14的工程,保存路径在为“D:\\学号+姓名(用拼音)\\ chapter14”文件夹下。

第二:异常处理。

通过下列程序实现对除数为零产生的异常的捕获,并作出相应提示处理。 1、在该工程中再新建一个java源文件,并输入如下代码: public class TryCatchFinally1{ public static void main( String args[] ) {

//调用可能产生异常的方法Proc()

try { Proc( 0 ); Proc( 1 ); }

//捕获异常,并对异常进行处理

catch( ArithmeticException e ) {

System.out.println(\ }

catch( Exception e ) {

System.out.println(\ }

finally {

System.out.println(\ } }

// 定义可能产生异常的Proc()方法,并声明异常 static void Proc( int sel ) throws ArithmeticException

34

工学院计算机系 Java程序设计 实验指导

{ System.out.println(\ if( sel==0 ) { System.out.println(\ return; } else if( sel==1 ) { int i=0; int j=4/i; } } }

2、编译运行程序,查看运行结果。 第三:关于异常处理的程序改错。

首先,在该工程里新建一个java源文件,并输入下列代码: public class MyClass {

public static void main(String args[]) {

myMethod(); }

public void myMethod() throw MyException {

throws(new MyException()); } }

class MyException {

public String toString() {

return(\用户自定义的异常\ } }

其次,将程序中错误的地方改正,运行该程序查看程序运行结果。

35

工学院计算机系 Java程序设计 实验指导

实验十五 数组应用

一、实训目的

数组是一种比较重要的数据类型。通过本次实验,掌握Java数组的使用方法,特别是

一维数组和二维数组的声明、创建和使用。 二、实训内容

a) 通过练习书上已有的程序,学习数组的使用方法。 b) 通过程序填空、改错的方法,加深理解。 c) 通过编程练习,进一步掌握数组的使用方法。 三、实训步骤

第一:新建一个名为chapter15的工程,保存路径在为“D:\\学号+姓名(用拼音)\\ chapter15”文件夹下。

第二:练习书上已有的程序,学习一维数组的使用方法。 1. 利用选择排序法完成对数据的递增排序及输出。

2. 在工程chapter13里新建一个java源文件,输入【例5.2】里的代码。 3. 将代码稍加修改,使之实现数据从大到小排列。 第三:程序填空及改错。

1. 在工程chapter13里新建一个java源文件,输入下面的代码,并将空白处代码填完整。 下面的代码所要实现的功能是:数学中的矩阵在java中用二维数组来实现,程序实现两个矩阵相加的运算。 package ch05; class ArrayAdd {

public static void main(String args[]) {

int c[][]={{1,2,3},{4,5,6},{7,8,9}}; int d[][]={{2,2,2},{1,1,1},{3,3,3}}; int i,j;

int e[][]= //e数组用于存放相加结果矩阵 System.out.println(\ for(i=0;i

for(j=0; ;j++) System.out.print(c[i][j]+\ \ System.out.println();

} //输出c数组中各元素

System.out.println(\ for(i=0;i

36

工学院计算机系 Java程序设计 实验指导

{

for(j=0;j

System.out.print(d[i][j]+\ \ System.out.println(); } //输出d数组中各元素

System.out.println(\ for(i=0;i

for(j=0;j

//各元素相加 System.out.print(e[i][j]+\ \ }

System.out.println(); } } }

2. 程序改错。下面程序实现的功能是计算一个数组中各元素的平均值。将程序中的错误

改正,使之能显示出正确的结果。 算法分析:

1)计算平均值的功能由方法arrayAverage来实现。ArrayAverage的形式参数是一维数组。 2)在main方法中以实际参数调用方法arrayAverage。

package ch05; class ArrayAvg {

public static void main(String args[]) {

int c[9]={1,2,3,4,5,6,7,8,9}; int j;

System.out.println(\ for(j=1;j<=9;j++)

System.out.print(c[j]+\ \ System.out.println();

System.out.println(\ System.out.println(arrayAverage(c[])); }

37

工学院计算机系 Java程序设计 实验指导

static float arrayAverage(int d) {

float average=0;

for(int i=0;i

第四:编程题。

自己定义一个一维数组,数组中放10个整数,程序中实现将前5个元素与后5个元素对换,即将第1个元素和第10个元素互换,将第2个元素和第9个元素互换,依此类推。 四、思考练习

a) 参考下面的程序,下面的程序实现从键盘读入n个数字存放到数组中。试将上面

的编程中的10个整数也按此方法从键盘输入。

import java.io.*; //必须引入io包 class ArrayC1 {

public static void main(String args[]) throws IOException {

BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in)); int a[],i,temp; String c;

System.out.println(\数组中的元素个数 c=keyin.readLine();

temp=Integer.parseInt(c); //键盘输入的是字符串必须转换成整型 a=new int[temp];

System.out.println(\每行输一个元素 for(i=0;i

c=keyin.readLine(); a[i]=Integer.parseInt(c); }

System.out.println(\ for(i=0;i

System.out.print(a[i]+\ \ } }

38

工学院计算机系 Java程序设计 实验指导

实验十六 界面程序设计

一、实验目的

掌握GUI编程中的主要概念:AWT,Swing,窗口、面板,容器布局,布局管理器。掌握GUI编程。掌握事件编程机制。 二、实验内容

1、编程包含一个标签和一个按钮,单击按钮时,标签的内容在\你好\和\再见\之间切换。

2、编程包含一个单选按钮组和一个普通按钮,单选按钮组中包含三个单选,文本说明分别为“普通”、“黑体”和“斜体”。选择文本标签为“普通”的单选按钮时,普通按钮中的文字为普通字体,选择文本标签为“黑体”的单选按钮时,普通按钮中的文字的字体为黑体,选择文本标签为“斜体”的单选按钮时,普通按钮中的文字的字体为斜体。

3、编程确定当前鼠标的位置坐标。

4、编程使用BorderLayout布局方式放置5个按钮。 三、实验步骤

1. 本程序文件名为TestFrame import java.awt.*; import javax.swing.*;

public class TestFrame extends JFrame { JTextArea text;

public TestFrame(String s) {

super(s);//调用父类的构造函数,设置窗口的标题名称。 Container contentPane = getContentPane();//得到窗口内容面板

contentPane.setLayout(new BorderLayout( ));//设置内容面板的布局为边框布局 //创建并添加文本区到窗口中间

text=new JTextArea(\这是一个文本区,用来输入文本。\

contentPane.add(text,BorderLayout.CENTER);//将文本区添加到窗口中间 //创建图片对象并设置窗口图标

Toolkit tk=getToolkit();//得到一个Toolkit对象

Image img=tk.getImage(\创建图片对象 setIconImage(img);//设置窗口图标

setSize(400,300);//设置窗口的宽、高分别为400像素和300像素 setVisible(true);//设置窗口可见,缺省是不可见的 }

public static void main (String[] args) {

TestFrame w=new TestFrame(\我的窗口应用程序\ }

39

工学院计算机系 Java程序设计 实验指导

}

2.本程序是在内容面板上布置按钮。 import java.awt.*;

import javax.swing.*;

public class UsePanel extends JFrame { JTextArea text;//文本区

JButton btn[]=new JButton[5];// 有5个元素的按钮数组 public UsePanel(String s) { super(s);

Container contentPane = getContentPane(); contentPane.setLayout(new BorderLayout());

text=new JTextArea(\这是一个文本区,用来输入文本。\

contentPane.add(text,BorderLayout.CENTER);//将文本区添加到窗口中间 JPanel panel=new JPanel();//创建缺省布局方式(FlowLayout)的面板 for(int i=0;i

contentPane.add(panel,BorderLayout.NORTH);//将面板添加到窗口北边

setSize(400,300); setVisible(true); }

public static void main (String[] args) {

UsePanel w=new UsePanel(\演示面板布局\ } }

四、思考练习

1. 创建一个含有标签和按钮的窗口,实现点击按钮修改标签背景颜色的功能。 2. Java的事件处理机制是怎样

40

本文来源:https://www.bwwdw.com/article/31n.html

Top