• 201521123060 《Java程序设计》第10周学习总结


    1.本周学习总结

    1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容。
    异常:
    1.不要乱用异常;
    2.异常发生时:确定异常类型,异常位置;
    3.尽量使用已有的异常类。
    多线程:

    2.书面作业

    本次PTA作业题集异常多线程
    1.finally
    题目4-2
    1.1 截图你的提交结果(出现学号)

    1.2 4-2中finally中捕获异常需要注意什么?
    答:需要注意resource.close();这句代码要放进finally里执行。

    2.用异常改进ArrayIntegerStack
    题目4-3
    2.1 截图你的提交结果(出现学号)

    2.2 实验总结
    答:添加出错时抛出异常的功能,使用户知道错误原因,从而改正。

    3.自定义异常
    题目5-4
    3.1 截图你的提交结果(出现学号)

    3.2 自定义异常有哪几个关键点?
    答:1.所有异常都是Throwable 、Exception或其子类;
    2.通过throw关键字抛出异常;
    3.尽量使用已有的异常类。

    4.读取文件并组装对象
    实验任务书中中的题目3:读取文件并组装对象
    给出关键代码(需出现你的学号)

    public class ReadFileUsingScanner201521123060{
    	public static void main(String[] args)  throws FileNotFoundException{
    		ArrayList<User> student=new ArrayList<User>();
    		Scanner in = new Scanner(new File("身份证号.txt"));
    		while(in.hasNextLine()){
    			try{
                      String line = in.nextLine();//读出myfile.txt的下一行
    			    Scanner lineScanner = new Scanner(line);//为每一行建立一个扫描器
    			    lineScanner.useDelimiter(" ");//使用空格作为分隔符		
    				String a1 = lineScanner.next();	
    					if(a1.length() == 0 || a1.length() > 10) {
    						throw new IllegalArgumentException("a1.length = " + a1.length()+"; 第 "+count+" 行");
    		               }
    				String a2 = lineScanner.next();//身份证号
    					if(a2.length() != 18){
    						throw new IllegalArgumentException("a2.length = " + a2.length()+"; 第 "+count+" 行");
    					}
    				String a3 = lineScanner.next();//性别
    					if(!a3.equals("男") && !a3.equals("女")){
    						throw new IllegalArgumentException("性别错误:"+a3+"; 第 "+count+"行");
    					}
    				String a4 = lineScanner.next();//年龄		
    				String a5 = lineScanner.next();//地址
    				while(lineScanner.hasNext()){//谨防地址只有一段
    					a5 += lineScanner.next();
    				}
    				System.out.println(a1+a2+a3+a4+a5);
    				student.add(new User(a1,a2,a3,Integer.parseInt(a4),a5));
    		    }catch (NumberFormatException e){
    		    	System.out.println(e);
    		    }catch (NoSuchElementException e){
    		    	System.out.println(e);
    		    }catch (IllegalArgumentException e){
                    System.out.println(e);
                }finally{
                	 if (in != null) {
                         in.close();
                     }
                }
    		}
    		Collections.sort(student, (User o1, User o2) -> {
                return o1.getAge() - o2.getAge();
        });
            for (User user : student) {
                System.out.println(user);
            }
    	}
    }
    

    5.学会使用Eclipse进行调试
    观看相关调试视频
    5.1 简述使用Eclipse进行调试需要几步?

    答:1.在正确的地方设置断点;
    2.启动调试模式;
    3.使用Eclipse专门用于调试的debug perspective;
    4.查看状态值。

    5.2 调试时F5, F6, F7快键键各有什么不同?什么情况该使用哪个快捷键?
    答:F5:step into,跳入某个函数内部;
    F6:step over,跳过函数;
    F7:step return,跳出函数。
    当想跳入一个函数时就使用F5快捷键,跳入后使用F6进行调试,没有问题的跳过,调试完毕后按F7跳出函数。

    5.3 除了Eclipse的调试器,你还使用什么方法调试程序?
    答:System.out.println。

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

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

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

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

    Thread t1 = new Thread( () -> {System.out.println(mainThreadName);
                System.out.println(Thread.currentThread().getName());
                System.out.println(Arrays.toString(Thread.currentThread().getClass().getInterfaces()));
            } );
    

    6.4 实验总结
    答:学会了线程的创建和使用以及守护线程,使用了Runnable匿名内部类。

    7.源代码阅读:多线程程序BounceThread
    7.1 哪个类是支持多线程的类,它实现了什么接口。这个类做了些什么?

    答:BallRunnable是支持多线程的类,它实现了Runnable接口,对小球移动后的界面清空,并sleep。

    7.2 Ball.java这个程序只做了两件事,这两件事分别是什么?
    答:1.getShape()获得小球的大小;
    2.move(Rectangle2D bounds)小球移动的位置坐标。

    7.3 BallComponent也只做了两件事,这两件事分别是什么?
    答:1.add(Ball b)加入小球;
    2.paintComponent(Graphics g)画小球

    7.4 BounceThread中,什么时候启动了新线程?
    答:点击addButton按钮时会添加一个小球,就启动了一个新线程。

    7.5 这个程序是如何实现?一个大致的执行流程是什么?
    答:点击addButton按钮,添加一个小球并移动,每点击一次就出现一个小球,直到小球移动一定的步数后停止。

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

    答:可以多个用户登录。

    3. 码云上代码提交记录

    题目集:异常、多线程(3-1, 3-2, 4-1, 4-2, 4-3)
    3.1. 码云代码提交记录
    在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图

  • 相关阅读:
    putty远程登录,no supported authentication methods available解决方法(腾讯云)
    spring boot 集成 springbootstarterquartz 集群版配置
    排序算法
    密码发生器
    分解质因数
    python基础面试题
    计算输入密码的时间
    论文解读(GCC)《Efficient Graph Convolution for Joint Node RepresentationLearning and Clustering》 Learner
    期望、方差、协方差 Learner
    论文解读(LGAE)《Simple and Effective Graph Autoencoders with OneHop Linear Models》 Learner
  • 原文地址:https://www.cnblogs.com/zq1996/p/6786177.html
Copyright © 2020-2023  润新知