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. 码云上代码提交记录

  • 相关阅读:
    53. Maximum Subarray
    64. Minimum Path Sum
    28. Implement strStr()
    26. Remove Duplicates from Sorted Array
    21. Merge Two Sorted Lists
    14. Longest Common Prefix
    7. Reverse Integer
    412. Fizz Buzz
    linux_修改域名(centos)
    linux_redis常用数据类型操作
  • 原文地址:https://www.cnblogs.com/handsome321/p/6786198.html
Copyright © 2011-2022 走看看