车站检查危险品 JAVA,第八周&Java实验报告六

Java实验报告

实验四类的继承

一、实验目的

(1)       理解异常的基本概念;

(2)       掌握异常处理方法及熟悉常见异常的捕获方法。

二、实验要求

(1)       练习捕获异常、声明异常、抛出异常的方法、熟悉try和catch子句的使用。

(2)       掌握自定义异常类的方法。

三、实验内容

(一)   编写一个类,在其main()方法中创建一个一维数组,在try字句中访问数组元素,使其产生ArrayIndexOutOfBoundsException异常。在catch子句里捕获此异常对象,并且打印“数组越界”信息,加一个finally子句,打印一条信息以证明这里确实得到了执行。

(二)   自定义异常类的使用

车站检查危险品的设备,如果发现危险品会发出警告。编程模拟设备发现危险品。

技术方案:

编写一个Exgeption的子类DangerException,该子类可以创建异常对象,该异常对象调用toShow()方法输出“危险物品”。编写一个Machine类,该类的方法checkBag(Goods goods)当发现参数goods是危险品时(goods的isDanger属性是true)将抛出DangerException异常。

程序在主类的main()方法中的try-catch语句的try部分让Machine类的实例调用checkBag(Goods goods)的方法,如果发现危险品就在try-catch语句的catch部分处理危险品。

四、实验过程(请自己调整格式)

代码:

1 packagecom.company;2

3 classExceptionDemo4 {5

6 public static voidmain(String[] args)7 {8 int array [] = new int [3];//数据类型 数组名[] = new 数据类型[个数];

9

10 System.out.println("*****计算开始*****");11 try

12 {13 int num = array [5];14 }15 catch(ArrayIndexOutOfBoundsException e)16 {17 System.out.println("数组越界啦!!!"+e);18 }19 finally

20 {21 System.out.println("*****计算结束*****");22 }23 }24 }

运行结果:

d578bb17c4184d53de646acc40649f79.png

代码:

1 package com.company;2

3 public classDemo4 {5 public static voidmain(String[] args) {6

7 Machine m = newMachine();8 Goods goods = newGoods();9

10 String item []={"水果","零食","硫磺","98K"};11

12 for(int i=0;i

16 if (item[i].equals("98K") || item[i].equals("硫磺")) {17 goods.isDanger();18 System.err.println(item[i] + "是危险物品"); //输出红色字体

19 }20 else

21 {22 System.out.println(item[i] + "是安全的");23 }24 }25 try

26 {27 m.checkBag(goods);28 }29 catch(DangerException e)30 {31 e.toShow();32 }33 }34 }

1 package com.company;2

3 public classGoods4 {5 String name;6 boolean isDanger;7

8 publicboolean isDanger()9 {10

11 returnisDanger;12 }13 publicString getName()14 {15 returnname;16 }17 public voidsetName(String name)18 {19 this.name =name;20 }21

22 public voidsetDanger(boolean isDanger)23 {24 this.setIsDanger();25 }26 publicObject getIsDanger()27 {28 returnisDanger;29 }30 public voidsetIsDanger(Object isDanger) //Object类在java.lang包下,是所有类的根31 {32 this.isDanger =(boolean) isDanger;33 }34 }

1 package com.company;2

3 public classMachine4 {5 public void checkBag(Goods goods)throws DangerException //public 返回值类型 方法名称(参数列表...)throws 异常类{}

6 {7 if(goods.isDanger())8 {9 DangerException Isdanger = newDangerException();10 }11 }12 }

1 package com.company;2

3 public classDangerException extends Exception4 {5 public voidtoShow()6 {7 System.out.println("有危险物品!");8 }9 }

运行结果:

86fb5c8b869cb1b4dec29bdf72cd10b1.png

跟老师上课讲的例题几乎一模一样,照着老师的模板,我们只需要稍微完善下就行,所有问题不大

五、 本次作业的总结

Object类的定义,常用方法:

1).Object类是所有类的父类,位于java.lang包中。

2).数组也是Object类的子类。

3).Object类的常用方法有:toString(); equals(); hashCode();。。。。。。

Object类在java.lang包下,是所有类的根。任何类的对象,都可以调用Object类中的方法,包括数组对象。

toString方法:

toString方法可以将任何一个对象转换成字符串返回

equals方法:

比较对象的虚地址,但是可以在类中被重写。

六、本周预习

通过 Callable 和 Future 创建线程:

1. 创建 Callable 接口的实现类,并实现 call() 方法,该 call() 方法将作为线程执行体,并且有返回值。

2. 创建 Callable 实现类的实例,使用 FutureTask 类来包装 Callable 对象,该 FutureTask 对象封装了该 Callable 对象的 call() 方法的返回值。

3. 使用 FutureTask 对象作为 Thread 对象的 target 创建并启动新线程。

4. 调用 FutureTask 对象的 get() 方法来获得子线程执行结束后的返回值。

创建线程的三种方式的对比:

1. 采用实现 Runnable、Callable 接口的方式创建多线程时,线程类只是实现了 Runnable 接口或 Callable 接口,还可以继承其他类。

2. 使用继承 Thread 类的方式创建多线程时,编写简单,如果需要访问当前线程,则无需使用 Thread.currentThread() 方法,直接使用 this 即可获得当前线程。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值