20172322 2017-2018-2 《程序设计与数据结构》第九周学习总结
20172322 2017-2018-2 《程序设计与数据结构》第九周学习总结
教材学习内容总结
- 异常
- 学会了使用
try-catch
来实现未捕获的异常的处理。可以使得异常被捕获进而不导致程序出现错误退出。使用try
写入可能产生异常的语句,使用catch
来编写在捕获异常后继续执行的代码(可以为空)。 - "未捕获的异常"指在编译过程中不会被编译软件显示异常但是在运行时会出现异常导致程序直接退出,例如:“ArithmeticException”、"IndexOutOfBoundException"等。
- 可以使用
finally
子句来使得一些命令在try-catch
语句中始终被执行。 - 我们可以在一些异常类的基础上编写自己的异常类----自定义异常。
throws
与throw
必须同时出现!
- 学会了使用
- 递归
- 递归是指一个方法调用自己。
- 迷宫问题和汉诺塔问题是递归方法体现的两个例子。
- 使用递归可以实现与循环相似的一些功能,例如PP12.1就是一个鲜明的例子。
教材学习中的问题和解决过程
- 本周教材学习问题不多。
- 问题1:最初对未捕获的异常的命名方式不太理解,它为什么要被成为未捕获的异常呢?该命名的方式是如何命名的?
- 问题1解决方案:范雯琪给我讲了一下她的理解:所谓未捕获异常可能是指编译工具没有发现的异常,只有在运行时才会抛出错误。我感觉到了豁然贯通。
- 问题2:关于无穷递归,无穷递归如何实现?它会导致什么样的错误?
- 问题2解决方案:看到了文章《可怕的无穷递归》有了一些理解,在文章中他给出了一些例子,并且写出了最容易的抛出错误"StackOverflowException".
代码调试中的问题和解决过程
- 问题1:在做PP11.1和PP11.2时最初并没有实现“直到输入“DONE”为止”这一条件,导致后期加如这一条件时遇到了一些困难,因为最先是使用的while循环来实现这一目标。
- 问题1解决方案:突然想到
break
这一个命令,这个命令好像可以直接退出循环。所以就编写了以下代码
if (value.equals("DONE"))
break;
- 问题2:在做PP12.1时,并不知道用递归方法如何实现回文的判断。
- 问题2解决方案:上网查询了相关的代码,借鉴了文章《使用递归实现回文判断》并且在递归方法后面加上了自己的理解。如图
代码托管
突然发现IDEA居然能统计有效代码,厉害厉害!
上周考试错题总结
-
错题1及原因:对栈的记忆有些许忘记,忘记了栈的调用方法是什么样的。
-
理解情况:栈的调用遵循“先进后出,后进先出”的原则,所以说处理的顺序是相反的,并不是正向。
-
错题2及原因:对
catch
为空和没有catch
理解出现错误,以为两者等同。 -
理解情况:两者不相等,一个
try
必须要有至少一个catch
与其对应,但是catch
的内容可以为空。 -
错题3及原因:对
BufferedReader
的使用不理解。 -
理解情况:浏览博客《关于java中BufferedReader的read()及readLine()方法的使用心得》理解了相关用法
结对及互评
- 博客中值得学习的或问题:
- 范雯琪同学的博客加上了目录,看起来很厉害耶。然后我也去加上啦。
- 代码中值得学习的或问题:
- 本周暂无。
点评过的同学博客和代码
- 本周结对学习情况
-
结对学习内容
- 教会范雯琪同学自编写异常,使她对PP项目的问题豁然贯通
- 在范雯琪同学编写PP项目遇到困难时我积极伸出了援手,使得她对本章她觉得一些难点豁然贯通!
- 她在编写PP11.1时在没有使用while循环的情况下居然用了
break
还问我为什么break
红了......这个人有点笨。 - 她在编写PP12.1时向我询问了一下代码的具体写法,在对最后递归方法实现的时候不理解,给她解释了一下为什么需要写上一个字符,两个字符和其他,而不是一个字符和其他。
其他
- 感悟:本周那个王老师布置IO异常处理作业有些难度,虽然自己没有满足所有要求,但是自己还是尽自己所能满足相关基础要求。
- 思考:下周就要对Android的相关知识进行学习啦,比较激动!
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 242/242 | 1/4 | 13/13 | 增加了对Java的兴趣 |
第二周 | 297/539 | 1/5 | 15/28 | 发现目标并没有想象中那么难 |
第三周 | 315/854 | 2/7 | 18/46 | 突然发觉JAVA的难度不小 |
第四周 | 1269/2123 | 1/8 | 50/96 | Java难到哭,但是有信心击败他! |
第五周 | 737/2860 | 1/9 | 30/126 | 难度的减小激发了学习动力 |
第六周 | 542/3402 | 2/11 | 20/146 | 不能说难度变小!!!又难了T T |
第七周 | 956/4357 | 1/12 | 35/181 | 平平淡淡才是真 |
第八周 | 2448/6805 | 3/15 | 80/261 | 四则运算花的时间太多了,还好书上例题的代码老师给了 |
第九周 | 1284/8089 | 2/17 | 70/331 | IO异常的处理是真的有点难度 |
-
计划学习时间:50小时
-
实际学习时间:70小时
-
改进情况:commit的要求继续实施,根据学长对上周博客的建议修改了上周博客,并在本周博客中尽量避免类似问题发生。