第八周课程报告&&实验报告六
Java实验报告
班级 计科二班 学号 20188450 姓名 李代传
完成时间 2019.10.16
评分等级
实验四 类的继承
- 实验目的
- 理解异常的基本概念;
- 掌握异常处理方法及熟悉常见异常的捕获方法。
- 实验要求
- 练习捕获异常、声明异常、抛出异常的方法、熟悉try和catch子句的使用。
- 掌握自定义异常类的方法。
- 实验内容
- 编写一个类,在其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: |
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()方法。