201521123017 《Java程序设计》第10周学习总结
1. 本周学习总结

2. 书面作业
Q1.finally
题目4-2
1.1 截图你的提交结果(出现学号)
1.2 4-2中finally中捕获异常需要注意什么?
1.1 截图

1.2 4-2中finally中捕获异常需要注意resource是否是空指针,及在关闭resource可能产生的其它异常,try-catch所捕获的异常为Exception异常,这样可以捕获所有可能的异常(包括NullPointerException及其Exception子类异常)
Q2.用异常改进ArrayIntegerStack
题目4-3
2.1 截图你的提交结果(出现学号)
2.2 实验总结
2.1 截图

2.2 实验总结:主要的功能函数public Integer push(Integer item);,public Integer pop();,public Integer peek();与之前PTA实验的所写代码一致,主要是对于异常的抛出。例如如果栈满,抛出FullStackException,public Integer push(Integer item) throws FullStackException,并判定if(this.size()>=arrStack.length),则FullStackException e= new FullStackException();throw e;抛出异常,之后入栈的功能实现的代码不变,其余函数也是类似改进,在方法名后面+throws+异常类型,在方法实现中判断栈的情况抛出对应异常,实现方法的代码不变即可
Q3.自定义异常
题目5-4
3.1 截图你的提交结果(出现学号)
3.2 自定义异常有哪几个关键点?
3.1 截图

3.2 建立两个异常类IllegalScoreException,IllegalNameException继承exception类,接着对不合理的数据判定抛出异常。例如 如果姓名首字母为数字则抛出IllegalNameException,public void setName(String name) throws IllegalNameException,判定name.charAt(0)>='0'&&name.charAt(0)<='9',抛出throw new IllegalNameException(告诉调用者错误的信息),对不合理分数抛出异常,与之类似,改动的主要是异常的类型IllegalScoreException和判定的条件score1<0 || score1>100
Q4.读取文件并组装对象
实验任务书中中的题目3:读取文件并组装对象
给出关键代码(需出现你的学号)
- 本题容易出现的异常:首先是文件的读取,是否有该文件,故try-catch(FileNotFoundException e),再者,是读取的信息的完整性,代码实现的是读入人的信息,包括姓名,身份证号,性别,年龄和地址5个属性,若是读入的line中没有全部(5个属性)的信息,将会因此报错,此时需要捕获try-catch(Exception e),还有可能是读入的信息是空或是不符合属性要求(例如读入性别的信息是“男”或“女”,但却出现其他的字符串,出错),也需要报错
try{
in = new Scanner(new File("身份证号.txt"));//为myfile.txt这个File创建一个扫描器in
while(in.hasNextLine()){
String line = in.nextLine();//读出myfile.txt的下一行
Scanner lineScanner = new Scanner(line);//为每一行建立一个扫描器
lineScanner.useDelimiter(" ");//使用空格作为分隔符
try{
String a1 = lineScanner.next();//姓名
String a2 = lineScanner.next();//身份证号
String a3 = lineScanner.next();//性别
String a4 = lineScanner.next();//年龄
String a5 = lineScanner.next();//地址
while(lineScanner.hasNext()){//谨防地址只有一段
a5 += lineScanner.next();
}
System.out.println(a1+a2+a3+a4+a5);
try {
if (a1.length()==0) {
throw new Exception("姓名的信息为空");
}
if (a2.length()!=18) {
throw new Exception("身份证号的信息不完整或为空");
}
if (!a3.equals("男") && !a3.equals("女")) {
throw new Exception("性别的信息不是男或女");
}
if(a4.length()<0){
throw new Exception("年龄的信息出错");
}
if(a5.length()==0){
throw new Exception("地址的信息为空");
}
} catch (Exception e) {
System.out.println(e);
}
}catch(Exception e){
System.out.println(e);
}
}
}catch(FileNotFoundException e){
System.out.println(e);
}finally{
if(in!=null){
try{
in.close();
}catch(NullPointerException e){
System.out.println(e);
}
}
}
Q5.学会使用Eclipse进行调试
观看相关调试视频
5.1 简述使用Eclipse进行调试需要几步?
5.2 调试时F5, F6, F7快键键各有什么不同?什么情况该使用哪个快捷键?
5.3 除了Eclipse的调试器,你还使用什么方法调试程序?
5.3 选做:实验任务书中的题目5:使用Eclipse进行调试中的选做
5.1 步骤:
- 设置断点
- 打开Debug,进入Debug界面
- 使用快捷键F5 F6 F7进行所要进行的调试操作,观看右上界面数值的变化(数值界面一般在右上)
- 找出问题,去掉断点,返回JAVA界面
5.2 F5(step into):进入当前行的方法内部,一步一步执行;F6(step over,跳过):执行当前行,但不进入执行细节;F7 (step return,跳出):返回上一步执行的方法(相对应F5)
5.3 自己在代码设置一些属性的输出来看代码有无出错或是有无达到自己所要的结果,若在某处不符合,则在此处进行代码改写找出错误,方法比较累
Q6.题集多线程
6.1 程序填空3-1、3-2。(截图提交结果,出现你的学号)
6.2 函数4-1(Thread)、4-2(Runnable)(截图提交结果,出现你的学号)
6.3 函数4-3(Runnable与匿名内部类)(截图提交结果,出现你的学号),并使用Labmda表达式改写。
6.4 实验总结
6.1 截图

6.2 截图
函数4-1(Thread)

函数4-2(Runnable)

6.3 截图

Labmda表达式改写
Thread t1 = new Thread(()->{
System.out.println(mainThreadName);
System.out.println(Thread.currentThread().getName());
System.out.println(Arrays.toString(Thread.class.getInterfaces()));
}
6.4 实验总结:创建线程不推荐继承Thread类,采取实现Runnable接口,创建实现Runnable接口的对象,再将此对象作为Thread构造函数的参数,创建Thread的实例;关闭线程,可以调用Thread类的方法中的yield()方法,可以暂停当前线程(即关闭线程,放弃CPU);使用匿名内部类写Thread类,只要的格式是new Thread(new Runnable(){...}),故在{}中编写run()方法,输出主线程名,线程t1的线程名,线程t1所实现的所有接口,与之前匿名内部类的编写没太大区别,Labmda表达式改写,主要有三部分,参数,箭头和方法体(实现的功能),这次的改写主要是参数为无,只要()即可,箭头和方法体的编写与之前Labmda表达编写类似,无太大却别
Q7.源代码阅读:多线程程序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退出线程(退出系统)
Q8.购物车系统中的多线程
8.1 购物车系统中可能存在哪些多线程问题?
- 一个顾客相当于一个线程,在出现多个顾客抢购一个物品时,有时会因物品数量为0而导致其他顾客无法购买
3. 码云上代码提交记录及PTA实验总结
3.1. 码云代码提交记录
- 在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图
异常PTA实验提交

多线程PTA实验提交

201521123017 《Java程序设计》第10周学习总结的更多相关文章
- 2018面向对象程序设计(Java)第10周学习指导及要求
2018面向对象程序设计(Java)第10周学习指导及要求(2018.11.1-2018.11.4) 学习目标 理解泛型概念: 掌握泛型类的定义与使用: 掌握泛型方法的声明与使用: 掌握泛型接口的定 ...
- 面向对象程序设计(JAVA) 第10周学习指导及要求
2019面向对象程序设计(Java)第10周学习指导及要求 (2019.11.1-2019.11.4) 学习目标 1.掌握java异常处理技术: 2.了解断言的用法: 3.了解日志的用途: 4.掌 ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145218《Java程序设计》第一周学习总结
20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...
- 20145236 《Java程序设计》第九周学习总结
20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...
- 20155304田宜楠2006-2007-2 《Java程序设计》第一周学习总结
20155304田宜楠2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 - 浏览教材,根据自己的理解每章提出一个问题 第一章 除了书上提到的开发工具还有什么适合 ...
- 20155304田宜楠 2006-2007-2 《Java程序设计》第二周学习总结
20155304田宜楠 2006-2007-2 <Java程序设计>第二周学习总结 教材学习内容总结 一.类型与变量 1.类型 整数: 可细分为为short整数(占2字节),int整数(占 ...
随机推荐
- winform 自定义控件的使用
c#的自定义控件还是很方便的,至少相对于c++而言. 1,当然是建立一个windows 窗体空间库,我这里就是用vs 2015 ,工程名MyControl 第二步.在自定义空间窗体内,拖放这样一组空间 ...
- Vue页面Demo
为了学习了解Vue.js,试着写了一个demo,如下; 准备工作: 需要引入的js和css库有: 1.vue.js 主要是学习,所以引入了这个js库,实际运行时应该使用vue.min.js 2.axi ...
- Ngnix+tomcat负载均衡
系统环境 Centos6.5 nginx1.4.7 https://nginx.org/download/nginx-1.4.7.tar.gz tomcat7.0.79 http://apache. ...
- 这是一个简单的前台短信验证码功能 ajax实现异步处理 (发送和校验)
<script type="text/javascript"> var InterValObj; //timer变量,控制时间 var count = 60; //间隔 ...
- js运算
今天把五个题目都做出来了,虽然可能用的方法比较麻烦.不过总体来说不错: <!DOCTYPE html><html> <head> <meta charset= ...
- DataSet 转 List
public class OrderInfo { public OrderResult GetOrderInfoByOrderNum(List<string> orderNumList) ...
- 细说 Azure Storage 的冗余策略
当我们想要把应用搬到云端的时候,首先要关注的便是数据的安全性.当然所有的云服务厂商都会对用户数据承诺一个非常高的安全性,但万一出现意外呢?我们是不是还要有适当的应对方案?比如今年的3月8日晚间,Azu ...
- (转)新手写爬虫v2.5(使用代理的异步爬虫)
开始 开篇:爬代理ip v2.0(未完待续),实现了获取代理ips,并把这些代理持久化(存在本地).同时使用的是tornado的HTTPClient的库爬取内容. 中篇:开篇主要是获取代理ip:中篇打 ...
- 简述C/C++调用lua中实现的自定义函数
1.首先说下目的,为什么要这么做 ? 正式项目中,希望主程序尽量不做修改,于是使用C/C++完成功能的主干(即不需要经常变动的部分)用lua这类轻量级的解释性语言实现一些存在不确定性的功能逻辑:所以, ...
- Ubuntu 14.04 安装LNMP(nginx/1.12.1+php7.1.9+mysql5.7.19)环境
这篇教程中,我们将讨论怎样在Ubuntu 14.04搭建LNMP环境 1 安装Nginx 首先我们要更新apt源 sudo add-apt-repository ppa:nginx/stable s ...