JAVA实验报告二.doc
《JAVA实验报告二.doc》由会员分享,可在线阅读,更多相关《JAVA实验报告二.doc(20页珍藏版)》请在咨信网上搜索。
精选 HUBEI UNIVERSITY OF AUTOMOTIVE TECHNOLOGY JAVA语言程序设计 实验报告 齐心 编著 翟亚红 审核 计算机实验教学示范中心 2013年1月 . 精选 实验二 Java类编程练习 实验目的: 1. 掌握类及类的声明 2. 掌握对象的定义和使用 3. 掌握接口的定义与实现 实验内容: 1. 对象的创建和使用 编写一个圆环类Ring的Java程序。圆环类有3个数据成员,分别是内半径innerRadius,外半径outerRadius和颜色color,这些属性通过get和set方法进行封装。另外,圆环类中的getArea方法可以返回其面积。把程序中的代码补充完整,并查看结果。 public class Ring { private double innerRadius; private double outerRadius; public String color; public Ring(double iRadius, double oRadius, String c) { // 初始化数据成员 this.innerRadius = iRadius; this.outerRadius = oRadius; this.color = c; } . 精选 // 用get和set方法封装数据成员 public double getInnerRadius() { return innerRadius; } public void setInnerRadius(double innerRadius) { this.innerRadius = innerRadius; } public double getOuterRadius() { return outerRadius; } public void setOuterRadius(double outerRadius) { this.outerRadius = outerRadius; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } . 精选 public double getArea() { return Math.PI * (getOuterRadius() * getOuterRadius() - getInnerRadius() * getInnerRadius()); } public double geticricle(){ //内周长 return 2*Math.PI*getInnerRadius(); } public double getocricle(){ //内周长 return 2*Math.PI*getOuterRadius(); } public static void main(String[] args) { Ring ring = new Ring(5, 8, "red"); double ring1,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) 将程序中的语句Ring ring = new Ring(5,8,"red"); 改成Ring ring = new Ring();修改后编译运行,此时有错误发生吗?分析错误的原因。 2) 接着为程序添加一个如下所示的默认构造函数,观察程序运行是否还有上述错误发生? public Ring() { 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)的功能。 把程序中的代码补充完整,并查看结果。 //import javax.swing.text.TabableView; class Trangle { double sideA,sideB,sideC,area,length; boolean boo; public Trangle(double a,double b,double c) { setABC(a,b,c);//带参数的构造方法 . 精选 } double getLength() { if(boo) { return sideA+sideB+sideC; } else { System.out.println("不是一个三角形,不能计算周长"); return 0; } } public double getArea() { if(boo) { double p=(sideA+sideB+sideC)/2.0; area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC)) ; return area; } else { . 精选 System.out.println("不是一个三角形,不能计算面积"); return 0; } } public void setABC(double a,double b,double c) { //参数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; } } . 精选 } class Lader { double above,bottom,height,area; Lader(double a,double b,double h) { //带参数的构造方法,将参数a,b,h分别赋值给above,bottom,height 【补充代码…】 this.above=a; this.bottom=b; this.height=h; } double getArea() { //方法体,,要求计算出area返回 // 【补充代码…】 return 0.5*(above+bottom)*height; } } class Circle { double radius,area, length; . 精选 Circle(double r) { //带参数的构造方法 【补充代码 this.radius=r; } double getArea() { //方法体,要求计算出area返回【补充代码…】 return Math.PI*radius*radius; } double getLength() { //getArea方法体的代码,要求计算出length返回【补充代码…】 return 2*Math.PI*radius; } void setRadius(double newRadius) { radius=newRadius; } double getRadius() { return radius; . 精选 } } public class AreaAndLength { public static void main(String args[]) { double length,area; Circle circle = null; Trangle trangle = null; Lader lader = null; //创建对象circle(半径为5)【补充代码】 circle=new Circle(5); //创建对象trangle(边长分别为3,4,5) 【补充代码】 trangle=new Trangle(3,4,5); //创建对象lader【补充代码】 lader=new Lader(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)方法: public abstract double earnings(); 子类必须重写父类的earnings()方法,给出各自领取每年报酬的具体方式。 有一个Company类,该类用Employee数组作为成员,Employee数组的单元可以是YearWorker对象、MonthWorker对象、WeekWorker对象的上转型对象。程序能输出Company对象一年需要支付的薪水总额。 请按模版要求,将代码补充完整。 abstract class Employee { public abstract double earnings(); } class YearWorker extends Employee { . 精选 //重写earnings()方法【补充代码…】 public double earnings(){ return 100000; } } class MonthWorker extends Employee { //重写earnings()方法【补充代码…】 public double earnings(){ return 10000; } } class WeekWorker extends Employee { //重写earnings()方法【补充代码…】 public double earnings(){ return 5000; } } class Company { Employee[] employees; double salaries = 0; Company(Employee[] employees) { this.employees = employees; . 精选 } public double salariesPay() { salaries = 0; //计算salaries【补充代码…】 for (int j = 0; j < employees.length; j++){ salaries+=employees[j].earnings(); } return salaries; } } public class HardWork { public static void main(String[] args) { Employee[] employees = new Employee[20]; for (int i = 0; i < employees.length; i++) { if(i%3==0) employees[i] = new WeekWorker(); else if(i%3==1) employees[i] = new MonthWorker(); else if(i%3==2) employees[i] = new YearWorker(); } Company company = new Company(employees); . 精选 System.out.println("公司年工资总额:" + company.salariesPay()); } } 运行结果: 公司年工资总额:705000.0 4. 掌握嵌套类和内部类的概念和用法 编写一个程序要求定义一个外部类Outer,然后在Outer类中定义一个内部类Inner和局部类Local,内部类Inner和局部类Local的任务都是显示出外部类中的数组元素,然后求出这些数组元素的平均值。 请按模版要求,将代码补充完整。 class Outer { private int data[]; Outer(int x[]) { data = x; } void checkInner() { Inner innerObj = new Inner(); // 调用Inner对象的show()方法 【补充代码】 . 精选 innerObj.show(); System.out.println("内部类计算的平均值: " + innerObj.average()); } void checkLocal() { class Local { void show() { System.out.print("从局部类显示数组元素:"); for (int i = 0; i < data.length; i++) { System.out.print(data[i] + " "); } System.out.println(); } int average() { int sum = 0; for (int i = 1; i < data.length; i++) { sum += data[i]; } return sum/data.length; // 返回data数组的平均值【补充代码】 } } Local localObj = new Local(); localObj.show(); . 精选 System.out.println("局部类计算的平均值: " + localObj.average()); } class Inner { void show() { System.out.print("从内部类显示数组元素:"); for (int i = 0; i < data.length; i++) { // 打印data数组的每个元素【补充代码】 System.out.print(" "+data[i]); } System.out.println(); } int average() { int sum = 0; for (int i = 1; i < data.length; i++) { sum += data[i]; } return sum / data.length; } } } public class InnerClassTest { public static void main(String[] args) { . 精选 int a[] = { 6, 8, 9, 22, 34, 7, 2, 1, 15 }; Outer outerObj = new Outer(a); outerObj.checkInner(); // 调用outerObj对象的checkLocal方法【补充代码】 outerObj.checkLocal(); } } 运行结果: 从内部类显示数组元素: 6 8 9 22 34 7 2 1 15 内部类计算的平均值: 10 从局部类显示数组元素:6 8 9 22 34 7 2 1 15 局部类计算的平均值: 10 实验总结: 本文档部分内容来源于网络,如有内容侵权请告知删除,感谢您的配合! .- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 实验 报告
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文