zoukankan      html  css  js  c++  java
  • 201521123049 《JAVA程序设计》 第10周学习总结

    1. 本周学习总结

    1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容。

    2. 书面作业

    本次PTA作业题集异常、多线程

    2 finally

    题目4-2

    1.1 截图你的提交结果(出现学号)

    1.2 4-2中finally中捕获异常需要注意什么?

    1.2 第一次捕获异常时应当是在资源无法正常打开时,此时需要抛出异常并输出该异常的相关提示,接着进入finally中执行必须执行的语句,将资源关闭,如果资源不能正常关闭,需要抛出异常并输出该异常的相关提示。

    3 自定义异常

    题目5-4

    4.1 截图你的提交结果(出现学号)

    4.2 自定义异常有哪几个关键点?

    1.所有异常都必须是Exception,Throwable的子类或其子类的子类;

    2.判断是否需要try-catch异常类,需要则继承Exception类,不需要则继承RuntimeException;

    4 读取文件并组装对象

    实验任务书中中的题目3:读取文件并组装对象

    给出关键代码(需出现你的学号)
    public class Main201521123115{

    public static void main(String[] args) throws FileNotFoundException {
        Scanner in = new Scanner(new File("身份证号.txt"));// 为myfile.txt这个File创建一个扫描器in
        ArrayList<User> list=new ArrayList<User>();
        while (in.hasNextLine()) {
            String line = in.nextLine();// 读出myfile.txt的下一行
            Scanner lineScanner = new Scanner(line);// 为每一行建立一个扫描器
            // System.out.println("lineScanner="+lineScanner);
            lineScanner.useDelimiter(" ");// 使用空格作为分隔符
            // System.out.println(line);
            
            try{
            String a1;
            String a2;
            String a3;
            String a4;
            String a5;
            a1 = lineScanner.next();
            a2 = lineScanner.next();
            a3 = lineScanner.next();
            a4 = lineScanner.next();
            a5 = lineScanner.next();
            
            while (lineScanner.hasNext()) {// 谨防地址只有一段
                a5 += lineScanner.next();
            }
            int k=Integer.parseInt(a4);
            User user=new User(a1,a2,a3,k,a5);
            list.add(user);
            System.out.println(a1 + a2 + a3 + a4 + a5);
            }catch(Exception e){
            }
        }
        Collections.sort(list,new AgeComparator());age排序后输出
                System.out.println(list);
        in.close();
    }
    

    }
    class AgeComparator implements Comparator{//年龄比较器,对User的Age进行排序

    @Override
    public int compare(User o1, User o2) {
        // TODO Auto-generated method stub
        return o1.getAge()-o2.getAge();
    }
    

    }

    5 学会使用Eclipse进行调试

    观看相关调试视频

    5.1 简述使用Eclipse进行调试需要几步?

    5.2 调试时F5, F6, F7快键键各有什么不同?什么情况该使用哪个快捷键?

    5.3 除了Eclipse的调试器,你还使用什么方法调试程序?

    5.3 选做:实验任务书中的题目5:使用Eclipse进行调试中的选做

    5.1 (1).根据错误信息判断出错的地方设置断点

    (2).启动Debug模式进入调试;

    (3).根据需要对设置断点的地方进入该函数(F5),跳过该行或函数(F6),跳出这个函数(F7)

    (4).鼠标移动到变量处右键点击watch可查看当前属性

    (5).清楚断点结束该程序。

    5.2 F5:(step into)进入函数进行调试;

    F5:(step over)跳过这行或者跳过这个函数;
    F7:(step return)当还未执行完函数但想停止时可以跳出这个函数。

    5.3还可以在出错的地方前后用system.out.println()进行打印,查看后续操作是否会执行,多数在当循环函数出现问题时使用system.out.println();,例如T5-4题目中,一开运行时发现输入了一次就打印了sc.closed,于是在while循环的末尾处进行了system.out.println操作,原因是使用了sc.nextLine()将换行符也接受,因此判断不是newz字符时就退出循环打印。

    6 题集多线程

    6.1 程序填空3-1、3-2。(截图提交结果,出现你的学号)

    6.2 函数4-1(Thread)、4-2(Runnable)(截图提交结果,出现你的学号)

    6.3 函数4-3(Runnable与匿名内部类)(截图提交结果,出现你的学号),并使用Labmda表达式改写。

    6.4 实验总结




    Labmda表达式改写:

    public static void main(String[] args) {
    final String mainThreadName = Thread.currentThread().getName();
    Thread t1 = new Thread(() -> {
    System.out.println(mainThreadName);
    System.out.println(Thread.currentThread().getName());
    System.out.println(Arrays.toString(Thread.class.getInterfaces()));
    });
    t1.start();
    }

    6.4 3-1:将t1设置为后台线程,使其在主线程终止时也会自动结束;

    3-2:调用join()方法,直到目标线程t1结束才恢复;
    4-1:编写MyThread类,并按题目要求重写run方法;
    4-2:(1)word比较完了需置为null;
    (2)需要通过捕获异常来使进程结束,使用sleep方法抛出异常,使线程结束。

    7 源代码阅读:多线程程序BounceThread

    7.1 哪个类是支持多线程的类,它实现了什么接口。这个类做了些什么?

    7.2 Ball.java这个程序只做了两件事,这两件事分别是什么?

    7.3 BallComponent也只做了两件事,这两件事分别是什么?

    7.4 BounceThread中,什么时候启动了新线程?

    7.5 这个程序是如何实现?一个大致的执行流程是什么?

    7.1 BounceFrame类是支持多线程的,实现BallRunnable接口,BounceFrame类先是创建JFrame窗口,并且JFrame窗口中设有两个按钮,strat和Close来触发不同的事件(strat是创建一个新的球移动,close是关闭线程),线程实现球在JFrame窗口内移动,并在终点处停止

    7.2 一是球的移动,即如果球击中一个边缘,将球移动到下一个位置,反向方向;二是获取当前位置的球的形状。

    7.3 一是球的绘画,二是在面板上添加一个球。

    7.4 addButton(buttonPanel, "Start", new ActionListener()),按下strat按钮,触发新的事件,调用函数addBall(),在addBall()中启动新的线程

    7.5 流程:

    建立JFrame窗口
    添加strat和close按钮
    点击start按钮,触发事件,调用函数addBall()
    在函数中建立Runnable对象,启动线程
    close退出线程(退出系统)

    8 购物车系统中的多线程

    8.1 购物车系统中可能存在哪些多线程问题?

    一个顾客相当于一个线程,在出现多个顾客抢购一个物品时,有时会因物品数量为0而导致其他顾客无法购买。

    3. 码云上代码提交记录

  • 相关阅读:
    第五篇:JMeter 定时器
    第四篇:JMeter 性能测试基本过程及示例
    第三篇:JMeter 组件手册
    第一篇 HTTP 协议报文结构及示例
    第二篇 JMeter 目录及关键配置分析
    第一篇:什么是 JMeter和为什么选择Jmeter做性能测试
    教你如何识别百度蜘蛛IP含义
    DEDECMS安装之后需要做的安全处理和须知
    织梦联动类别-地区调用不显示第三级城市的原因
    CSS的特效
  • 原文地址:https://www.cnblogs.com/handsome321/p/6786198.html
Copyright © 2011-2022 走看看