第二阶段学习总结
(1)前言
题目集04、题目集06中第二题难度较高而且是同一类问题的迭代问题,我认为对逻辑、程序设计上有较大考验,图形类设计问题中使用了Arraylist、抽象类,最主要的是方法的设计、类中方法之间相互调用的关系。对于我难度较大。
期中考试,难度较低,前两题粗心编写代码出错将输入的数值赋值给同一个变量中。
链表我只是实现部分功能并没有完全弄懂
(2)设计分析
期中试题




三角形计算

银行类设计


单向链表

(3)踩坑心得
题目集04中我并没有对题进行完整的了解,就开始写代码;没有深入思考所需方法的功能、类也没有具体设计过。因此导致写出的代码关系混乱,有的地方很复杂

一些主方法里的代码过长,应该做出相应类的方法,然后在主函数中调用,因此写代码前类的设计、程序的设计很重要。


从类图中我们可以看到题目集04中的第三题,一共有8个类,方法更是很多,儿测试点绿油油一片就是没有对程序进行设计的后果!
题目集04
7-1
计算两点之间距离,


我采用了split方法将输入的字符串分割成几段,在用for循环遍历整个字符数组来比对输入字符串的合法性,但结果不尽人意。

以及后来的几道题都使用了这种方法


光使用这种判断方法并不能有效判断所有的合法与否的情况

将所有判断的点放在另一个类中,就会方便许多
题目集05
7--5

判断银行卡号输入格式是否正确,我将输入的银行卡号字符串转化成长型Long.parseInt
也就导致当银行卡号多输入一位就会越界

期中考试试题分析


在主方法中调用l.setpoint方法时由于相似所以调用的代码是复制粘贴上去的,就导致在第一次时调用了两次同一个函数,输入的数值也赋值给同一个方法中的对象,导致距离始终无法得出正确结果。

第二题是在第一题的基础上加上了一个父类Element让Line与Point继承display共同的地方,此外还计入一个新的类Plane专门set、print line的颜色。
7-3第三题

在第二题的基础上加上了一个容器类GeometryOblect
class GeometryObject{
private ArrayList<Element> list = new ArrayList<>();
public GeometryObject() {
}
public void add(Element element) {
list.add(element);
}
public void remove(int index) {
if(index < 1 || index > list.size()) {
return;
}
list.remove(index - 1);
}
public ArrayList<Element> getList(){
return this.list;
}
}

(1)改进建议
对于for循环遍历比对
将“,”前后分开,调用split方法只按照空格分开
题目集04
7-3
import java.util.ArrayList;
public class PointInputError {
//判断从字符串中解析出的点的数量是否合格。
public static void wrongNumberOfPoints(ArrayList ps, int num) {
if (ps.size() != num) {
System.out.println("wrong number of points");
System.exit(0);
}
}
//判断输入的字符串中点的坐标部分格式是否合格。若不符合,报错并退出程序
public static void wrongPointFormat(String s) {
if (!s.matches("[+-]?([1-9]\\d*|0)(\\.\\d+)?,[+-]?([1-9]\\d*|0)(\\.\\d+)?")) {
System.out.println("Wrong Format");
System.exit(0);
}
}
// 输入字符串是否是"选项:字符串"格式,选项部分是否是1~5其中之一
public static void wrongChoice(String s) {
if (!s.matches("[1-5]:.+")) {
System.out.println("Wrong Format");
System.exit(0);
}
}
}
创建类中方法来判断输入合法性,既严谨又不会有遗漏而且逻辑清晰简洁。
题目集05
7-5
不必将字符串转为长型判断,只需注意字符串中的空格,改用equals方法进行比对即可
(5)阶段总结
1.学习内容接口、集合、数组、map、treeset、treemap、linkset、linkmap、lambda表达式、正则表达式
2.不足
关于set、map、lambda表达式没有熟练掌握
- 学习方向
加强mook上的学习,加强课前学习效果,对于学过的知识在下课后立即抽出15分钟的的时间进行练习强化
- 课堂建议
希望能听到一些结合代码实例(比如功能实现、项目实现等方面的代码)的讲解

浙公网安备 33010602011771号