zoukankan      html  css  js  c++  java
  • 第八周课程报告&&实验报告六

    Java实验报告

    班级 计科一班 学号 20188390 姓名 宋志豪

    实验四 类的继承

    实验目的

    理解异常的基本概念;
    掌握异常处理方法及熟悉常见异常的捕获方法。

    实验要求

    练习捕获异常、声明异常、抛出异常的方法、熟悉try和catch子句的使用。
    掌握自定义异常类的方法。

    实验内容

    编写一个类,在其main()方法中创建一个一维数组,在try字句中访问数组元素,使其产生ArrayIndexOutOfBoundsException异常。在catch子句里捕获此异常对象,并且打印"数组越界"信息,加一个finally子句,打印一条信息以证明这里确实得到了执行。
    自定义异常类的使用
    车站检查危险品的设备,如果发现危险品会发出警告。编程模拟设备发现危险品。

    实验代码:

    package 测试;
    
    import java.util.Scanner;
    public class Main {
        public static void main(String[] args){
            char ch[]={'我','她'};
            try{
                for(int i=0;i<10;i++){
                    System.out.println("ch[i]="+ch[i]);
            }
            }
            catch (ArrayIndexOutOfBoundsException aE){
                aE.printStackTrace();
                System.out.println("数组越界出现异常");
            }
            finally{
                System.out.println("程序完成执行");
            }
    
        }
    
    }
    

    实验截图:

    技术方案:

    编写一个Exgeption的子类DangerException,该子类可以创建异常对象,该异常对象调用toShow()方法输出"危险物品"。编写一个Machine类,该类的方法checkBag(Goods goods)当发现参数goods是危险品时(goods的isDanger属性是true)将抛出DangerException异常。
    程序在主类的main()方法中的try-catch语句的try部分让Machine类的实例调用checkBag(Goods goods)的方法,如果发现危险品就在try-catch语句的catch部分处理危险品。

    实验代码

    package 自定义异常;
    
    public class Goods {
        String name;
        public Goods(String name) {
            super();
            this.name = name;
        }
        public Goods() {
            super();
        }
    
    }
    

    名称的定义

    package 自定义异常;
    public class DangerException extends Exception {
        public void toShow(){
            System.out.println("危险物品!");
        }
    
    }
    

    在判断完成后输出危险品!的提示

    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 自定义异常;
     
    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的数字!");
                }
            }        
        }
    
    }
    

    实现危险品的判断以及在控制台控制你要进行的操作的选择。

    上述各个实现一部分功能,从而实现题目的要求。

    实验结果:

    本次实验总结

    对我来说,这次的实验是一次不小的挑战,还是没能单独完成,借助了网络的力量。

    学习总结

    (1)包装类

         包装类分为两种类型:
    

    1、对象型(Object的直接子类):Boolean、Character(char);
    2、数值型(Number的直接子类): Byte、Double、Short、Long、Integer(int)、Float;
    (2)字符串与基本数据类型相互转换

         字符串转换为基本数据类型
    

    1.、String变为int 类型(Integer类):

    public static int parseInt(String s) throwsNumberFormatException
    

    2、 String变为double类型(Double类):

    public static double parseDouble(String s) throwsNumberFormatException
    

    3、String变为Boolean类型(Boolean类):

    public static boolean parseBoolean(String 
    

    (3)基本数据类型转换为字符串

     1. 任何数据类型使用了"+"连接空白字符串就变为了字符串类型。
     2. 使用String类中提供的valueOf()方法,此方法不产生垃圾。
    

    (4)异常
    所有的异常都是从Throwable继承而来的。

    1、运行时异常(unchecked exception):继承自java.lang. RuntimeException类

    常见的:
    ClassCastException(类型转换异常)
    IndexOutOfBoundsException(数组越界)
    NullPointerException(空指针)
    ArrayStoreException(数据存储异常,操作数组时类型不一致)
    IO操作的BufferOverflowException异常
    网络上搜索到的!!
    2、非运行时异常(checked exception):继承自java.lang.Exception类

    常见的:
    Java.lang.ClassNotFoundException
    Java.lang.NoSuchMetodException
    java.io.IOException
    网络上搜索到的!!

    Exception:
    定义方法时必须声明所有可能会抛出的exception; 在调用这个方法时,必须捕获它的checked exception,不然就得把它的exception传递下去;exception是从java.lang.Exception类衍生出来的。例如:IOException,SQLException就属于Exception。

    处理(用try ..catch..finally)异常类名不会的话可以用API。
    而RuntimeExcepetion处理可以随意。其他的Excepetion必须处理。

    (5)装箱和拆箱
    将一个基本数据类型变成包装类为装箱,将一个包装类变成基本数据类型为拆箱。
    装箱范例:

    拆箱范例:

    (6)多线程
    多线程是实现并发机制的一种有效手段。

    Java中实现多线程有两种方式,一种是继承Thread类,一种是实现Runnable接口,1.5之后还有一个Callable接口
    一个类继承Thread类就称这个类为多线程类,在其中必须覆写run()方法。这个方法为线程的主体。

    要正确的启动线程,是不能直接调用run()方法,应该调用从Thread类继承而来的start()方法。
    虽然调用的是start()方法,但实际调用的是run()方法的主体。
    并且只能调用一次start()方法。
    Runnable接口中只提供一个run()方法。

  • 相关阅读:
    NX CAM二次开发-UF_OPER_ask_program_group查询操作所在的程序顺序组tag
    NX CAM二次开发-UF_CAMGEOM_append_items设置切削区域
    NX CAM二次开发-UF_SETUP_create创建加工设置
    NX CAM二次开发-UF_SETUP_ask_setup获取加工设置
    NX CAM二次开发-UF_OPER_ask_oper_type查询指定操作的子类型
    NX CAM二次开发-UF_SETUP_ask_program_root获得程序组视图的根节点
    NX CAM二次开发-UF_OPER_ask_geom_group查询指定操作所在的几何组tag
    NX CAM二次开发-UF_UI_ONT_switch_view切换当前加工导航器指定的视图
    NX CAM二次开发-UF_SETUP_delete_setup删除加工设置
    NX CAM二次开发-UF_UI_PARAM_edit_object编辑CAM加工对象
  • 原文地址:https://www.cnblogs.com/songzhihaoT1/p/11698543.html
Copyright © 2011-2022 走看看