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

    学习总结

    1.启用多线程还是要用Thread类,想要实现多线程不是调用run()方法,而是start()方法。
    2.通过public Thread(Runnable target)和 public Tread(Runnable target,String name)接受。

    3.Runnable的子类实例对象。
    4.Runnable可实现资源共享,而Thread则不行。
    5.实现Runnable接口是有一些优势。
    6.适合多个相同程序代码的线程去处理同一资源的情况。
    7.可以避免由于Java的单继承局限。
    8.增强了程序的健壮性,代码能够被多个线程共享,代码与数据是独立的。

    9.同步代码块,用{}括起来的,再加上synchronized,就称为同步代码块

    实验六 Java异常

    • 实验目的
    • 理解异常的基本概念;
    • 掌握异常处理方法及熟悉常见异常的捕获方法。
    • 实验要求
    • 练习捕获异常、声明异常、抛出异常的方法、熟悉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部分处理危险品。

    四、实验过程

    public class Demo {
        public static void main(String[] args) {
            int i=0; 
            String s []={"a","b","c"};
            while(i<4){ try{ System.out.println(s[i]);
            }catch(ArrayIndexOutOfBoundsException e){ 
                System.out.println("数组越界");
            }
            finally {
                System.out.println("代码执行--finally");
                }
            } 
        }
    
        }

     

    五、结论

    通过本次实验,熟悉掌握了Java的异常机制。try部分抛出异常对象,通过catch捕获异常,并对异常做出处理。

    六、实验过程

    public class Application {
        public static void main(String[] args) {
            // TODO 自动生成的方法存根
            Machine m=new Machine();
            Goods goods = new Goods();
            String[] str={"枪","面包","刀具","酒精"};
    
            for(int i=0;i<str.length;i++) {
                goods.setName(str[i]);
                if(goods.getName().equals("枪")||goods.getName().equals("面包")||goods.getName().equals("刀具")) {
                    goods.setisDanger(true);
                }
                else {
                    goods.setisDanger(false);
                }
                try {
                    m.checkBag(goods);
                }
                catch(DangerException e){
                    e.toShow();            
                }
            }
            
        }
    
    }
    public class DangerException extends Exception{
            /**
         * 
         */
        private static final long serialVersionUID = 1L;
            String message;
            public DangerException(String s) {
                message=s+"危险物品!";
            }
            public DangerException() {
                // TODO 自动生成的构造函数存根
                message="危险物品!";
            }
            public void toShow() {
                System.out.println(message);
            }
            
        } 
    public class Goods {
        boolean isDanger;
        String name;
        Goods(String s) {
            name=s;
        }
        public void setName(String string) {
            // TODO Auto-generated method stub
            
        }
        public Goods() {
            // TODO Auto-generated constructor stub
        }
        public void setisDanger(boolean b) {
            isDanger = b;
        }
        public boolean isDanger() {
            return isDanger;
        }
        public String getName() {
            return name;
        }
    }
    public class Machine {
        void checkBag(Goods goods) throws DangerException{
            if(goods.isDanger()) {
                throw new DangerException(goods.getName());
            }
            else {
                System.out.println(goods.getName()+"不是危险品");
            }

    实验运行结果截图

     

     

     

     七.结论

    对string字符串对数组下标越界异常的认识和理解。对try{}catch{}finally{}的掌握,熟练运用字节进制的转换。

  • 相关阅读:
    [ERR] Node 10.211.55.8:7001 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
    PAT A1137 Final Grading (25 分)——排序
    PAT A1136 A Delayed Palindrome (20 分)——回文,大整数
    PAT A1134 Vertex Cover (25 分)——图遍历
    PAT A1133 Splitting A Linked List (25 分)——链表
    PAT A1132 Cut Integer (20 分)——数学题
    PAT A1130 Infix Expression (25 分)——中序遍历
    PAT A1142 Maximal Clique (25 分)——图
    PAT A1141 PAT Ranking of Institutions (25 分)——排序,结构体初始化
    PAT A1140 Look-and-say Sequence (20 分)——数学题
  • 原文地址:https://www.cnblogs.com/Markming/p/11692386.html
Copyright © 2011-2022 走看看