JAVA实验报告二.docx

上传人:b****8 文档编号:27803436 上传时间:2023-07-05 格式:DOCX 页数:17 大小:85.66KB
下载 相关 举报
JAVA实验报告二.docx_第1页
第1页 / 共17页
JAVA实验报告二.docx_第2页
第2页 / 共17页
JAVA实验报告二.docx_第3页
第3页 / 共17页
JAVA实验报告二.docx_第4页
第4页 / 共17页
JAVA实验报告二.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

JAVA实验报告二.docx

《JAVA实验报告二.docx》由会员分享,可在线阅读,更多相关《JAVA实验报告二.docx(17页珍藏版)》请在冰豆网上搜索。

JAVA实验报告二.docx

JAVA实验报告二

HUBEIUNIVERSITYOFAUTOMOTIVETECHNOLOGY

 

JAVA语言程序设计

实验报告

齐心编著

翟亚红审核

 

计算机实验教学示范中心

2013年1月

实验二Java类编程练习

实验目的:

1.掌握类及类的声明

2.掌握对象的定义和使用

3.掌握接口的定义与实现

实验内容:

1.对象的创建和使用

编写一个圆环类Ring的Java程序。

圆环类有3个数据成员,分别是内半径innerRadius,外半径outerRadius和颜色color,这些属性通过get和set方法进行封装。

另外,圆环类中的getArea方法可以返回其面积。

把程序中的代码补充完整,并查看结果。

publicclassRing{

privatedoubleinnerRadius;

privatedoubleouterRadius;

publicStringcolor;

publicRing(doubleiRadius,doubleoRadius,Stringc){

//初始化数据成员

this.innerRadius=iRadius;

this.outerRadius=oRadius;

this.color=c;

}

//用get和set方法封装数据成员

publicdoublegetInnerRadius(){

returninnerRadius;

}

publicvoidsetInnerRadius(doubleinnerRadius){

this.innerRadius=innerRadius;

}

publicdoublegetOuterRadius(){

returnouterRadius;

}

publicvoidsetOuterRadius(doubleouterRadius){

this.outerRadius=outerRadius;

}

publicStringgetColor(){

returncolor;

}

publicvoidsetColor(Stringcolor){

this.color=color;

}

publicdoublegetArea(){

returnMath.PI

*(getOuterRadius()*getOuterRadius()-getInnerRadius()

*getInnerRadius());

}

publicdoublegeticricle(){//内周长

return2*Math.PI*getInnerRadius();

}

publicdoublegetocricle(){//内周长

return2*Math.PI*getOuterRadius();

}

publicstaticvoidmain(String[]args){

Ringring=newRing(5,8,"red");

doublering1,ring2;

System.out.println("圆环的内半径:

"+ring.getInnerRadius());

System.out.println("圆环的外半径:

"+ring.getOuterRadius());

System.out.println("圆环的颜色:

"+ring.color);

System.out.println("圆环的面积:

"+ring.getArea()+"\n");

ring.setInnerRadius(4);

ring.setOuterRadius(6);//设置圆环ring的外半径为6

ring.setColor("blue");

ring1=ring.geticricle();

ring2=ring.getocricle();

System.out.println("圆环的内半径:

"+ring.getInnerRadius());

System.out.println("圆环的外半径:

"+ring.getOuterRadius());

System.out.println("圆环的颜色:

"+ring.color);

System.out.printf("圆环的面积:

%.2f\n",ring.getArea());

System.out.printf("圆环的内周长:

%.2f\n",ring1);

System.out.printf("圆环的外周长:

%.2f\n",ring2);

}

}

运行结果:

圆环的内半径:

5.0

圆环的外半径:

8.0

圆环的颜色:

red

圆环的面积:

122.52211349000193

圆环的内半径:

4.0

圆环的外半径:

6.0

圆环的颜色:

blue

圆环的面积:

62.83

圆环的内周长:

25.13

圆环的外周长:

37.70

思考:

1)将程序中的语句Ringring=newRing(5,8,"red");改成Ringring=newRing();修改后编译运行,此时有错误发生吗?

分析错误的原因。

 

2)接着为程序添加一个如下所示的默认构造函数,观察程序运行是否还有上述错误发生?

publicRing(){

innerRadius=1.0;

outerRadius=2.0;

color="white";

}

答:

没有错误发生。

 

3)如果在输出圆环的面积时要求保留两位小数,程序如何修改?

答:

System.out.printf("圆环的面积:

%.2f\n",ring.getArea());

 

4)请为圆环类Ring在添两个方法以便能返回内圆和外圆的周长,然后在主函数main()中分别创建两个对象ring1,ring2以显示周长。

答:

System.out.printf("圆环的内周长:

%.2f\n",ring1);

System.out.printf("圆环的外周长:

%.2f\n",ring2);

 

2.使用类来封装对象的属性和功能编写一个Java程序,该程序中有3个类:

Trangle、Lader和Circle,分别用来刻画“三角形”、“梯形”和“圆形”。

具体要求如下:

Trangle类具有类型为double的三个边(sideA,sideB,sideC),以及周长(length)、面积(area)属性,Trangle类具有返回周长(getLength)、面积(getArea)以及修改三个边(setABC)的功能。

另外还有一个boolean型的属性(boo),该属性用来判断三个数是否构成一个三角形。

Lader类具有类型为double的上底(above)、下底(bottom)、高(height)、面积(area)属性,具有返回面积(getArea)的功能。

Circle类具有类型为double的半径(radius)、周长(length)和面积(area)属性,具有返回周长(getLength)、面积(getArea)的功能。

把程序中的代码补充完整,并查看结果。

//importjavax.swing.text.TabableView;

classTrangle

{

doublesideA,sideB,sideC,area,length;

booleanboo;

publicTrangle(doublea,doubleb,doublec)

{

setABC(a,b,c);//带参数的构造方法

}

doublegetLength(){

if(boo)

{

returnsideA+sideB+sideC;

}

else

{

System.out.println("不是一个三角形,不能计算周长");

return0;

}

}

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;

}

}

publicvoidsetABC(doublea,doubleb,doublec)

{

//参数a,b,c分别赋值给sideA,sideB,sideC

//【补充代码…】

sideA=a;

sideB=b;

sideC=c;

if(a+b>c&&a+c>b&&b+c>a)//a,b,c构成三角形的条件表达式

{

//给boo赋值。

【补充代码】

boo=true;

}

else

{

//给boo赋值。

【补充代码】

boo=false;

}

}

}

classLader

{

doubleabove,bottom,height,area;

Lader(doublea,doubleb,doubleh)

{

//带参数的构造方法,将参数a,b,h分别赋值给above,bottom,height【补充代码…】

this.above=a;

this.bottom=b;

this.height=h;

}

doublegetArea()

{

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

//【补充代码…】

return0.5*(above+bottom)*height;

}

}

classCircle

{

doubleradius,area,length;

Circle(doubler)

{

//带参数的构造方法【补充代码

this.radius=r;

}

doublegetArea()

{

//方法体,要求计算出area返回【补充代码…】

returnMath.PI*radius*radius;

}

doublegetLength()

{

//getArea方法体的代码,要求计算出length返回【补充代码…】

return2*Math.PI*radius;

}

voidsetRadius(doublenewRadius)

{

radius=newRadius;

}

doublegetRadius()

{

returnradius;

}

}

publicclassAreaAndLength

{

publicstaticvoidmain(Stringargs[])

{

doublelength,area;

Circlecircle=null;

Trangletrangle=null;

Laderlader=null;

//创建对象circle(半径为5)【补充代码】

circle=newCircle(5);

//创建对象trangle(边长分别为3,4,5)【补充代码】

trangle=newTrangle(3,4,5);

//创建对象lader【补充代码】

lader=newLader(3,4,5);

//circle调用方法返回周长并赋值给length【补充代码】

length=circle.getLength();

System.out.println("圆的周长:

"+length);

//circle调用方法返回面积并赋值给area【补充代码】

area=circle.getArea();

System.out.println("圆的面积:

"+area);

//trangle调用方法返回周长并赋值给length【补充代码】

length=trangle.getLength();

System.out.println("三角形的周长:

"+length);

//trangle调用方法返回面积并赋值给area【补充代码】

area=trangle.getArea();

System.out.println("三角形的面积:

"+area);

//lader调用方法返回面积并赋值给area【补充代码】

area=lader.getArea();

System.out.println("梯形的面积:

"+area);

//trangle调用方法设置三个边,要求将三个边修改为12,34,1。

【补充代码】

trangle.setABC(12,34,1);

//trangle调用方法返回面积并赋值给area【补充代码】

area=trangle.getArea();

System.out.println("三角形的面积:

"+area);

//trangle调用方法返回周长并赋值给length【补充代码】

length=trangle.getLength();

System.out.println("三角形的周长:

"+length);

}

}

运行结果:

圆的周长:

31.41592653589793

圆的面积:

78.53981633974483

三角形的周长:

12.0

三角形的面积:

6.0

梯形的面积:

17.5

不是一个三角形,不能计算面积

三角形的面积:

0.0

不是一个三角形,不能计算周长

三角形的周长:

0.0

 

3.掌握上转型对象的使用,多态的特性

定义一个抽象(abstract)类,类名为Employee。

Employee的子类有YearWorker、MonthWorker和WeekWorker。

YearWorker对象按年领取薪水(每年10万),MonthWorker对象按月领取薪水(每月1万),WeekWorker对象按周领取薪水(每周0.5万,设定一个月4周)。

Employee类有一个抽象(abstract)方法:

publicabstractdoubleearnings();

子类必须重写父类的earnings()方法,给出各自领取每年报酬的具体方式。

有一个Company类,该类用Employee数组作为成员,Employee数组的单元可以是YearWorker对象、MonthWorker对象、WeekWorker对象的上转型对象。

程序能输出Company对象一年需要支付的薪水总额。

请按模版要求,将代码补充完整。

abstractclassEmployee{

publicabstractdoubleearnings();

}

classYearWorkerextendsEmployee{

//重写earnings()方法【补充代码…】

publicdoubleearnings(){

return100000;

}

}

classMonthWorkerextendsEmployee{

//重写earnings()方法【补充代码…】

publicdoubleearnings(){

return10000;

}

}

classWeekWorkerextendsEmployee{

//重写earnings()方法【补充代码…】

publicdoubleearnings(){

return5000;

}

}

classCompany{

Employee[]employees;

doublesalaries=0;

Company(Employee[]employees){

this.employees=employees;

}

publicdoublesalariesPay(){

salaries=0;

//计算salaries【补充代码…】

for(intj=0;j

salaries+=employees[j].earnings();

}

returnsalaries;

}

}

publicclassHardWork{

publicstaticvoidmain(String[]args){

Employee[]employees=newEmployee[20];

for(inti=0;i

if(i%3==0)

employees[i]=newWeekWorker();

elseif(i%3==1)

employees[i]=newMonthWorker();

elseif(i%3==2)

employees[i]=newYearWorker();

}

Companycompany=newCompany(employees);

System.out.println("公司年工资总额:

"+company.salariesPay());

}

}

 

运行结果:

公司年工资总额:

705000.0

 

4.掌握嵌套类和内部类的概念和用法

编写一个程序要求定义一个外部类Outer,然后在Outer类中定义一个内部类Inner和局部类Local,内部类Inner和局部类Local的任务都是显示出外部类中的数组元素,然后求出这些数组元素的平均值。

请按模版要求,将代码补充完整。

classOuter{

privateintdata[];

Outer(intx[]){

data=x;

}

voidcheckInner(){

InnerinnerObj=newInner();

//调用Inner对象的show()方法【补充代码】

innerObj.show();

System.out.println("内部类计算的平均值:

"+innerObj.average());

}

voidcheckLocal(){

classLocal{

voidshow(){

System.out.print("从局部类显示数组元素:

");

for(inti=0;i

System.out.print(data[i]+"");

}

System.out.println();

}

intaverage(){

intsum=0;

for(inti=1;i

sum+=data[i];

}

returnsum/data.length;//返回data数组的平均值【补充代码】

}

}

LocallocalObj=newLocal();

localObj.show();

System.out.println("局部类计算的平均值:

"+localObj.average());

}

classInner{

voidshow(){

System.out.print("从内部类显示数组元素:

");

for(inti=0;i

//打印data数组的每个元素【补充代码】

System.out.print(""+data[i]);

}

System.out.println();

}

intaverage(){

intsum=0;

for(inti=1;i

sum+=data[i];

}

returnsum/data.length;

}

}

}

publicclassInnerClassTest{

publicstaticvoidmain(String[]args){

inta[]={6,8,9,22,34,7,2,1,15};

OuterouterObj=newOuter(a);

outerObj.checkInner();

//调用outerObj对象的checkLocal方法【补充代码】

outerObj.checkLocal();

}

}

运行结果:

从内部类显示数组元素:

689223472115

内部类计算的平均值:

10

从局部类显示数组元素:

689223472115

局部类计算的平均值:

10

实验总结:

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

当前位置:首页 > 解决方案 > 学习计划

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

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