一、实验目的
★专题:类和对象基础★
1、掌握类的定义。
2、掌握类的使用——创建实例(对象)。
3、掌握set、get方法的本质。
4、初步掌握构造方法。
★专题:方法★
1、掌握方法的传值调用。
2、掌握方法的重载。
3、理解变量的作用域。
4、掌握可变长度参数。
5、理解递归程序的编写。
二、实验内容和主要步骤
★专题:类和对象基础★
1、掌握类的定义。
2、掌握类的使用——创建实例(对象)。
3、掌握set、get方法的本质。
4、初步掌握构造方法。
★专题:方法★
- 方法的传值调用
- 方法重载
- 变量作用域
- 可变长度参数方法
- 递归编程
三、实验结论和思考
1、实验专题“类和对象基础”中“代码6:InitOrder.java”的问题:
如果L20处,我们这样改为:“C myc = new C(2);” 试问,myc这个C类对象变量所在空间在什么区域?画一个示意图描述。
答:
2、定义一个三角形类Triangle,要求提供3条边长信息,以及求周长、求面积等行为。然后再定义一个测试类TriangleTest,作为主程序来测试Triangle类。一些要求如下:
(1)边长数据类型为普通整型即可,不能为负数。
(2)提供一个boolean型的私有成员canTri,用于判断三条边长能否构成三角形,并用公开方法isTri返回该私有成员变量canTri的状态。
(3)提供求周长的方法。
(4)提供求面积的方法。使用海伦公式:
已知三角形的三边长分别为a、b、c,根据海伦公式则三角形的面积公式如下图所示,其中公式里的p为半周长:
输出示例1:(其中红色字体都是变化的)
边长为3,4,5的三角形的周为:12,面积为:6.000
输出示例2:(其中红色字体都是变化的)
边长13,4,5不能构成三角形
作答要求:
(1)编写程序,在下方贴出程序代码。
答:
import java.lang.Math;
import static java.lang.System.out;
class Triangle {
int a,b,c;//定义三角形边长
private boolean canTri;
public boolean isTri(int a,int b,int c) {//判断三条边长能否构成三角形
if((a+b>c)&&(a-b<c))
return true;
else
return false;
}
int getCircumference() {//三角形周长方法
return a+b+c;
}
double getArea() {//三角形面积方法
int p=getCircumference()/2;
double s=Math.sqrt(p*(p-a)*(p-b)*(p-c));
return s;
}
String getInfo() {//返回三边长和三角形周长、面积
canTri=isTri(a,b,c); //判断三条边长能不能构成三角形
if(canTri) {//三条边能构成三角形
int d=getCircumference();
double e=getArea();
String str=String.format("三角形的三边长为:%d,%d,%d,周长是%d,面积是%f",a,b,c,d,e);
return str;}
else//三条边不能构成三角形
return ("该三条边不能构成一个三角形,无法求周长与面积");
}
}
public class TriangleTest {//测试类
public static void main(String[] args) {
Triangle T=new Triangle();
T.a=23;
T.b=14;
T.c=15;
String t=T.getInfo();
out.println(t);
}
}
(2)求出边长为23,14和15的三角形的周长和面积,在下方给出执行结果的截图。
答:
3、编写递归方法,将一个int型数据逆序输出,比如1234,输出为4321。
参考实验专题“方法”中的“递归编程”小节,补充完成“代码9:IntReverse类”中的reverse方法。要求:
(1)不能改变主方法中的调用语句。
(2)只需编写reverse方法体。
作答要求:
在下面粘贴reverse方法的定义代码(补充完善之后的方法代码,包括方法声明的头部)。
答:
public static void reverse(int x){
/* 请完成本方法体,实现将x的值逆序输出,即x=1234,则输出4321 */
if(x<10)//只有一个数字,直接输出
out.println(x);
else {
int n=x%10;//得到该数的高位并输出
out.print(n);
reverse(x/10);//递归输出逆序后的下一位
}
}
四、实验心得(必须填写)
在设计求三角形周长面积方法时,一开始毫无头绪,在那冥想半天毫无头绪猴,我选择了去翻书和查看老师上课用的ppt,重温了一遍那个方法的构造重载等相关知识点,以及最后的代码实例“面向对象抽象编程--求圆柱体的体积”,我开始渐渐掌握了此类题目的做法,所以对于此次题目,我在Triangle类体里定义了成员变量a,b,c为三角形三边长,继而构造了求周长方法getCircumference()和求买面积方法getArea(),最后设计了方法getInfo去调用上述两个方法,输出结果。