1、实验要求:编写一个Java应用程序,该程序中有3个类:Trangle、Leder和Circle,分别用来刻画“三角形”、“梯形”和“圆形”。具体要求如下:a) Trangle类具有类型为double的三个边,以及周长、面积属性,Trangle类具有返回周长、面积以及修改三个边的功能。另外,Trangle类还具有一个boolean型的属性,该属性用来判断三个属能否构成一个三角形。b) Lader类具有类型double的上底、下底、高、面积属性,具有返回面积的功能。c) Circle类具有类型为double的半径、周长和面积属性,具有返回周长、面积的功能。程序模板:AreaAndLength.ja
2、vaclass Trangle double sideA,sideB,sideC,area,length; boolean boo; public Trangle(double a,double b,double c) this.sideA=a; /【代码1】参数a,b,c分别赋值给sideA,sideB,sideC this.sideB=b; this.sideC=c; if(sideA+sideB)sideC&(sideC+sideB)sideA&(sideC+sideA)sideB) /【代码2】a,b,c构成三角形的条件表达式boo=true;/【代码3】给boo赋值。 elseboo
3、=false;【代码4】 /给boo赋值。 double getLength() return sideA+sideB+sideC;【代码5】 /方法体,要求计算出length的值并返回 public double getArea() if(boo) double p=(sideA+sideB+sideC)/2.0; area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC) ; return area; System.out.println(不是一个三角形,不能计算面积); return 0; public void setABC(double a,doub
4、le b,double c) /【代码6】参数a,b,c分别赋值给sideA,sideB,sideCif(sideA+sideB)sideB【代码7】) /a,b,c构成三角形的条件表达式【代码8】 /给boo赋值。【代码9】 /给boo赋值。class Lader double above,bottom,height,area; Lader(double a,double b,double h) this.above=a; this.bottom=b; this.height=h;【代码10】 /方法体,将参数a,b,c分别赋值给above,bottom,height double getA
5、rea()return (above+bottom)*height/2;【代码11】 /方法体,,要求计算出area返回class Circle double radius,area; Circle(double r) this.radius=r;【代码12】 /方法体double getArea() return Math.PI*radius*radius;/【代码13】方法体,要求计算出area返回 double getLength() return Math.PI*2*radius; /【代码14】getArea方法体的代码,要求计算出length返回 void setRadius(do
6、uble newRadius) radius=newRadius; double getRadius()return radius;public class AreaAndLength public static void main(String args) double length,area; Circle circle=null; Trangle trangle; Lader lader;circle=new Circle(5);【代码15】 /创建对象circletrangle=new Trangle(3,4,5); 【代码16】/创建对象trangle。lader=new Lader
7、(2,3,4);【代码17】 /创建对象laderlength=circle.getLength(); System.out.println(圆的周长:+length); area=circle.getArea();圆的面积:+area); length=trangle.getLength();三角形的周长: area=trangle.getArea();三角形的面积: area=lader.getArea();梯形的面积: trangle.setABC(12, 34, 1);实验后的练习:1. 程序中仅仅省略【代码15】,编译能通过吗? 不能通过,提示如下Exception in threa
8、d main java.lang.Error: Unresolved pilation problems: The local variable circle may not have been initializedThe local variable circle may not have been initialized at AreaAndLength.Trangle$AreaAndLength.main(Trangle.java:85)2. 程序中仅仅省略【代码16】,编译能通过吗? The local variable trangle may not have been initi
9、alizedat AreaAndLength.Trangle$AreaAndLength.main(Trangle.java:89)3. 程序中仅仅省略【代码15】,运行时出现怎样的异常提示?1给Trangle类增加3个方法,分别用来返回3个边:sideA、sideB和sideC。double getsideA()return sideA; double getsideB()return sideB; double getsideC()return sideC;2让AreaAndLength类中的circle对象调用方法修改半径,然后输出修改后的半径以及修改半径后的圆的面积和周长。circle
10、.setRadius(3);System.out.println(修改后的半径为+circle.getRadius();修改后的面积为+circle.getArea();修改后的周长为+circle.getLength();(二)实例成员与类成员。按程序模板的要求编写源文件,要特别注意程序的输出结果,并能正确解释输出的结果。程序运行效果示例: 程序运行效果如下图所示:Example.javaclass A 【代码1】 /声明一个float型实例变量a 【代码2】 /声明一个float型类变量b, void setA(float a) 【代码3】 /将参数a的值赋值给成员变量a void set
11、B(float b) 【代码4】 /将参数b的值赋值给成员变量b float getA() return a; float getB() return b; void inputA() System.out.println(a); static void inputB() System.out.println(b);public class Example public static void main(String args) A.b=100; /通过类名操作类变量b,并赋值100 A.inputB(); /通过类名调用方法inputB() A cat=new A(); A dog=new
12、A(); cat.setA(200); /cat调用方法setA(int a)将cat的成员a的值设置为200 cat.setB(400); /cat调用方法setB(int b)将cat的成员b的值设置为400 dog.setA(150); /dog调用方法setA(int a)将dog的成员a的值设置为150 dog.setB(300); /dog调用方法setB(int b)将dog的成员b的值设置为300 cat.inputA(); /cat调用inputA()。 cat.inputB(); /cat调用inputB()。 dog.inputA(); /dog调用inputA()。 d
13、og.inputB(); /dog调用inputB()。 1. 将inputA()方法中的System.out.println(a);改写为System.out.println(a+b);编译是否出错?为什么?不会,可以在非静态方法中引用静态变量。2. 将inputB()方法中的System.out.println(b);编译是否报错?会,无法在静态方法中引用非静态变量。(三)使用package语句与import语句。按实验要求使用package语句,并用import语句使用Java平台提供的包中的类以及自定义包中的类。掌握一些重要的操作步骤。程序模板:模板1:将模板1给出的Java源文件命名
14、为SquareEquation.java,将编译后得到的字节码文件复制到c:1000tomjiafei目录中。SquareEquation.javapackage tom.jiafei;public class SquareEquation double a,b,c; double root1,root2; public SquareEquation(double a,double b,double c) this.a=a; this.b=b; this.c=c; if(a!=0) boo=true; boo=false; public void getRoots() 是一元2次方程 doub
15、le disk=b*b-4*a*c; if(disk root1=(-b+Math.sqrt(disk)/(2*a); root2=(-b-Math.sqrt(disk)/(2*a); System.out.printf(方程的根:%f,%fn,root1,root2);方程没有实根n不是一元2次方程 public void setCoefficient(double a,double b,double c)模板2:将模板2给出的Java源程序SunRise.java保存到d:2000中。在编译模板2给出的Java源文件之前,要重新设置classpath。假设本地机SDK的安装目录是E:jdk
16、1.8。 在命令行执行如下命令: set classpath=C:Program Filesjavajdkjrelibrt.jar;.;c:1000或用鼠标右键点击“我的电脑”,弹出快捷菜单,然后选择“属性”命令,弹出“系统属性”对话框,再单击该对话框中的“高级”选项卡,然后单击“环境变量”按钮。将classpath的值修改为: E:jdk1.5jrelibrt.jar;C:然后重新打开一个命令行窗口,编译模板2给出的Java源程序。SunRise.javaimport tom.jiafei.*;class SunRise public static void main(String args) SquareEquation equation=new SquareEquation(4,5,1); equation.getRoots(); equation.setCoefficient(-3,4,5);【运行结果】五总结本次实验是Java的第二次上机,通过编程和上机实验理解了 Java 语言是如何体现面向对象编程基本思想,了解了类的封装方法,以及如何创建类和对象,了解了成员变量和成员方法的特性,掌握了 OOP 方式进行程序设计的方法。感受到了Java语言独有的魅力,为以后的Java语言编程奠定了基础。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1