Java实验报告
?
班级 计科二班 学号 20188450 姓名 李代传
完成时间 2019.10.16
评分等级
?
实验四 类的继承
?
车站检查危险品的设备,如果发现危险品会发出警告。编程模拟设备发现危险品。
技术方案:
编写一个Exgeption的子类DangerException,该子类可以创建异常对象,该异常对象调用toShow()方法输出"危险物品"。编写一个Machine类,该类的方法checkBag(Goods?goods)当发现参数goods是危险品时(goods的isDanger属性是true)将抛出DangerException异常。
程序在主类的main()方法中的try-catch语句的try部分让Machine类的实例调用checkBag(Goods?goods)的方法,如果发现危险品就在try-catch语句的catch部分处理危险品。
?
实验代码1: |
package 测试代码; ? import java.util.Scanner; ? public class Main { ? ????public static void main(String[] args) { ????????// TODO Auto-generated method stub ???????? ????????char ch[]={‘a‘,‘b‘,‘c‘,‘d‘}; ????????try{ ????????????for(int i=0;i<10;i++){ ????????????????System.out.print(ch[i]); ???????? } ????????}catch (ArrayIndexOutOfBoundsException aE){ ????????????aE.printStackTrace(); ????????????System.out.println("数组越界"); ????????}finally{ ????????????System.out.print("程序执行到了"); ????????} ????} } |
?
?
?
?
实验代码2: |
?
?
package 自定义异常的使用; ? import java.util.ArrayList; ? public class Machine { ???? ????ArrayList<String> dangerGoods=new ArrayList<String>(); ???? ????public Machine() { ????????super(); ????????dangerGoods.add("汽油"); ????????dangerGoods.add("不合格化妆品"); ????????dangerGoods.add("刀具"); ????????dangerGoods.add("炸弹"); ????????dangerGoods.add("火箭"); ????????dangerGoods.add("傻子"); ????} ????public void checkBag(Goods goods) throws DangerException{ ????????????try{ ????????????????if(dangerGoods.indexOf(goods.name)!=-1){ ????????????????????????throw new DangerException(); ????????????????} ????????????}catch(DangerException dangerE){ ????????????????dangerE.toShow(); ????????????????throw dangerE; ????????????} ????} ????public void printDangerGoods() { ????????System.out.println("危险品有:"); ????????int i=1; ????????for(String s:dangerGoods ){ ????????????System.out.print(i+++"、"); ????????????System.out.println(s); ????????} ????} ???? ????public void addDangerGoods(String dangerGoods) { ????????this.dangerGoods.add(dangerGoods); ????????System.out.println("加入危险品成功"); ????} ???? ????public void deleteDangerGoods(String dangerGoods){ ????????if(this.dangerGoods.indexOf(dangerGoods)==-1){ ????????????System.out.println("没有这个危险品"); ????????}else{ ???????? this.dangerGoods.remove(dangerGoods); ???????? System.out.println("删除成功"); ????????} ????} } |
package 自定义异常的使用; ? public class DangerException extends Exception { ????public void toShow(){ ????????System.out.println("危险物品!"); ????} } |
package 自定义异常的使用; ? public class Goods { ????String name; ? ????public Goods(String name) { ????????super(); ????????this.name = name; ????} ? ????public Goods() { ????????super(); ????} ???? } |
package 自定义异常的使用; ? import java.util.InputMismatchException; import java.util.Scanner; ? public class Main { ? ????public static void main(String [] args){ ???????? ????????Scanner input =new Scanner(System.in); ????????System.out.println("输入1检查危险物品,输入2增加危险物品,输入3删除危险物品。"); ????????Machine machine=new Machine(); ????????int number=1; ????????while(true){ ????????????try{ ????????????????number=input.nextInt(); ????????????????if(number>3||number<1){ ????????????????????throw new InputMismatchException(); ????????????????} ????????????????System.out.println("请输入物品名称:"); ????????????????Goods goods=new Goods(input.next()); ????????????????if(number==1){ ????????????????????try{ ????????????????????????machine.checkBag(goods); ????????????????????????System.out.println("不是危险品,不用处理。"); ????????????????????}catch(DangerException dangerE){ ????????????????????????System.out.println("危险品,请处理。"); ????????????????????} ???????????? }else if(number==2){ ???????????? ????machine.addDangerGoods(goods.name); ???????????? }else if(number==3){ ???????????? ????machine.deleteDangerGoods(goods.name); ???????????? } ????????????}catch(InputMismatchException inputE){ ????????????????System.out.println("请输入1-3的数字!"); ????????????} ????????} ???????? ????} } |
?
|
?
?
?
实验报告:
Java就是调用方法多,但是并不需要强行记忆,会查看API文档就可以了。
对于这个实验我觉得布置的非常好,是对我的编程能力的一次大提升。学到了很多东西!
?
?
?
?
课程报告:
学到了异常,知道了怎么处理(用try ..catch..finally)异常类名不会的话可以用API。
RuntimeExcepetion处理可以随意。其他的Excepetion必须处理。
开始了多线程的学习,学到了Thread类和Rannable接口,Thread是多线程必备的类。
开始线程必须要调用start()方法。
原文:https://www.cnblogs.com/xqldc/p/11688604.html