Java类-接口-异常

实验(2):类-接口-异常

一、实验目的:
学生能够自己编写类及接口的编程;能够自定义异常类。
二、实验要求:
独立完成程序的编写,并把源程序粘贴到每个题目的下面,字体为“Times New Roman”,大小为“小四”,单倍行距,不能有空行,实验报告表头部分信息填写完整,格式不能修改。
三、实验内容:
(一)创建一个名为Circle的类,半径为r,此类有2个构造方法,一个默认的无参构造方法;一个有参构造方法,参数为r。包含3个实例函数:
(1)double getR():获得半径r的值。
(2)double getArea():获得圆的面积。
(3)void setR(double r):设置半径r的值。
并编写类TestCircle测试Circle类。
源程序:

class Circle {
	final double PI = 3.1415926;
    private double r = 100;
    Circle(){}
    Circle(double r){
    	this.r = r;
    }
    public double getR(){
    	return r;
    }
    public double getArea(){
    	return PI*r*r;
    }
    public void setR(double r){
    	this.r = r;
    }
}
public class TestCircle {
	    public static void main(String[] args) {
       Circle c1 = new Circle();
       c1.setR(1);
       System.out.println(c1.getR());
       System.out.println(c1.getArea());
       Circle c2 = new Circle(10);
       c1.setR(1);
       System.out.println(c1.getArea());
       System.out.println(c2.getR());
       System.out.println(c2.getArea());
       c2.setR(13);
       System.out.println(c2.getArea());
	}

		private char[] getArea() {
			// TODO Auto-generated method stub
			return null;
		}

		private char[] getR() {
			// TODO Auto-generated method stub
			return null;
		}
}

运行结果截图:

在这里插入图片描述

(二)创建一个名为Triangle的类,三个边为a,b,c,此类有2个构造方法,一个默认的无参构造方法;一个有参构造方法,参数为a,b,c。包含3个实例函数:
(1)double[] getABC():获得三个边的值。
(2)double getArea():获得三角形的面积。
(3)void setABC(double a, double b, double c):设置三个边的值。
(4)在有参构造方法和setABC(double a, double b, double c)方法中要判断三个参数是否能构成一个三角形。如果不能构成三角形,则抛出NotTriangleException异常(NotTriangleException类为自定义异常类),显示异常信息“a,b,c不能构成三角形”。
并编写类TestTriangle测试Triangle类。
源程序:

class Triangle {
    private double a,b,c;
    Triangle(){}
    Triangle(double a,double b,double c){
    	if(a+b>c&a+c>b&c+b>a){
    		this.a = a;
        	this.b = b;
        	this.c = c;
    	}else{
    		System.out.println("三边不能构成三角形");
    	}
    }
     double[] gestABC(){
    	double[] x = {a,b,c};
    	return x;
    }
    double getArea(){
    	double s = a+b+c;
    	s = s/2;
    	s=s*(s-a)*(s-b)*(s-c);
    	System.out.println("s:"+s);
    	double x = Math.pow(s, 1.0/2);
    	System.out.println("x:"+x);
    	return x;
    }
    void setABC(double a,double b,double c){
    	this.a = a;
    	this.b = b;
    	this.c = c;
    }
}
public class TestTriangle {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Triangle c1 = new Triangle();
		Triangle c2 = new Triangle(3,4,5);
	       System.out.println(c1.gestABC());
	       System.out.println(c1.getArea());
	       c1.setABC(3,4,5);
	       System.out.println(c1.getArea());
	       
	       System.out.println(c2.gestABC());
	       System.out.println(c2.getArea());
	       c2.setABC(3,4,5);
	       System.out.println(c2.getArea());

	}
}

运行结果截图:

在这里插入图片描述

(三)设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声,要求如下:
(1)编写接口Animal。接口中有2个抽象方法:cry()和getAnimalName(),即要求实现该接口的各种具体动物类给出自己的叫声和种类名称。
(2)编写模拟器类Simulator。该类有一个playSound(Animal animal)方法,参数animal可以调用实现Animal接口的实现类中重写的cry()方法打印具体动物的声音,调用重写的getAnimalName()方法打印动物种类的名称。
(3)编写实现Animal接口的类Dog和Cat。
(4)编写主类TestSimulator。在主类的main方法中至少包含如下代码:
Simulator simulator = new Simulator();
simulator.playSound(new Dog());
simulator.playSound(new Cat());

源程序:

 class RecTangle {
    double h,w;
    RecTangle(){}
    RecTangle(double a,double b){
    	this.h = h;
    	this.w = w;
    }
    double[]getHW(){
    	double[] x = {h,w};
    	return x;
    }
    double getArea(){
    	double s = h*w;
    	return s;
    }
    void setHW(double h,double w){
    	this.h = h;
    	this.w = w;   	
    }
}
public class TestRecTangle {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		RecTangle c1 = new RecTangle();
	       c1.setHW(1,2);
	       System.out.println(c1.getHW());
	       System.out.println(c1.getArea());
	       RecTangle c2 = new RecTangle();
	       c1.setHW(1,2);
	       System.out.println(c1.getArea());
	       System.out.println(c2.getHW());
	       System.out.println(c2.getArea());
	       c2.setHW(1,2);
	       System.out.println(c2.getArea());

	}
}

运行结果截图:
在这里插入图片描述

四、实验小结
(写出你在此次试验中遇到的问题、解决方法及你的收获。删除本行)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半夏风情

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值