BLOG:
1.前言:最后几周的PTA难度明显上升,需要设计的类更多,尤其是学生成绩录入系统。还更考察对集合的使用,如Map,Set集合,利用他们自动排序 去重的功能,完成题目.
难度呈递增趋势。自己还是太菜,许多题目就没有拿到满分。随着本次的博客作业到来也预示着我的本学期的Java课程也来到了尾声,而本次的博客不仅仅是对近段时间
以来的学习做一个介绍,也是对本学期做一个总结。
2.设计与分析:
7-1 课程成绩统计程序-1
类图:
只过了51分,后面对异常的处理自己处理起来太费劲了。
要明白如何对数据进行处理,否则难以写对。
利用如何构造方法,对最后的成绩进行计算。
合理设计成绩的计算方法。
相关方法代码.
输入与输出类。
此题是后面几道题的基础,后面会在此基础上拓展。
7-1 统计Java程序中关键词的出现次数
输入格式:
输入Java源码字符串,可以一行或多行,以exit
行作为结束标志
输出格式:
- 当未输入源码时,程序输出
Wrong Format
- 当没有统计数据时,输出为空
- 当有统计数据时,关键字按照升序排列,每行输出一个关键字及数量,格式为
数量\t关键字
输入样例:
在这里给出一组输入。例如:
//Test public method
public HashMap(int initialCapacity) {
this(initialCapacity, DEFAULT_LOAD_FACTOR);
}
public HashMap(int initialCapacity, float loadFactor) {
if (initialCapacity < 0)
throw new IllegalArgumentException("Illegal initial capacity: " +
initialCapacity);
if (initialCapacity > MAXIMUM_CAPACITY)
initialCapacity = MAXIMUM_CAPACITY;
if (loadFactor <= 0 || Float.isNaN(loadFactor))
throw new IllegalArgumentException("Illegal load factor: " +
loadFactor);
this.loadFactor = loadFactor;
this.threshold = tableSizeFor(initialCapacity);
}
exit
输出样例:
在这里给出相应的输出。例如:
1 float
3 if
2 int
2 new
2 public
3 this
2 throw
此题较上题较为简单,没有复杂的类图设计。
7-3 课程成绩统计程序-2
参考类图(与第一次相同,其余内容自行补充):
这道题较1增加了实验成绩,所有要设计实验成绩类,并构造方法里增加数组。
注意计算实验成绩时,要对数组进行遍历。
利用集合处理分数。同理,与1一样 ,方法里进行遍历与查找,计算最后的总成绩。
相关成绩的计算方法,就是挨个遍历相关集合,找到与目标一致的数据,累加相除得到平均分。
最后输出结果。
此题较1比较,更加复杂。类之间关系要更精密。对异常的处理还没法应付。只写了正常输入情况。
7-2 课程成绩统计程序-3
课程成绩统计程序-3在第二次的基础上修改了计算总成绩的方式,
要求:修改类结构,将成绩类的继承关系改为组合关系,成绩信息由课程成绩类和分项成绩类组成,课程成绩类组合分项成绩类,分项成绩类由成绩分值和权重两个属性构成。
完成课程成绩统计程序-2、3两次程序后,比较继承和组合关系的区别。思考一下哪一种关系运用上更灵活,更能够适应变更。
题目最后的参考类图未做修改,大家根据要求自行调整,以下内容加粗字体显示的内容为本次新增的内容。
参考类图(与第一次相同,其余内容自行补充):
与1,2不同这次要自己录入绩点。
其他的计算方法与1,2类似,要修改计算的方法,实验成绩方法计算要改进。
用数组构造实验成绩。
两个构造方法
相关成绩的计算方法:
总体上这道题三次迭代越来越难,各有特色。但对异常情况的处理,都没好好解决。自己努力还是不够。
做每一个题目集是不要轻言放弃,要迎难而上,自己努力去学。
遇到复杂的系统问题不能慌张,要静下心,一步一步分析。问题就会迎刃而解。
3.踩坑心得:
对于这三道题,总体来说是能写出来的努力写了,不会的怎么也写不出。
1.首先写系统的输入,要学会用lambda表达式筛选信息。
2.其次可以书写多个构造方法,构造一个类的不同情况
3.对于复杂的数据,可以储存在集合中对数据处理,然后输出。
4.在方法中多次循环,会出现重复遍历的情况,增加内存。
5.对异常的处理,要从录入情况开始,不要到最后判断。否则很难。
6.从这次作业,我们才真正开始了对于类的设计,通过这一次作业我相信我们对于类的运用,会更加的熟悉,在第一题中,
就已经开始了对于类的设计,一开始的时候,要设计主类和子类,在这两个类里面,要实现相应的功能,在子类中有运用了许多的方法,
实现多功能编程
4.改进建议:
输入时,我应该把main函数里的方法放在一个新构造的类中,这样在主类中就不会那么繁琐,
思路看起来也更清晰,可读性更强。更重要的是,Java本生为我们提供了很多诸如截取字符
串,排序......等诸多方法供我们直接调用,这样会节约很多时间。
并且,我应该多用类来写功能,
而不是什么代码都挤到同一个类中,调试起来就很麻烦,而且利用率低,可重复性不高。
而且判断筛选信息时,使用多次if else if判断,代码可读性不强,过于复杂。
成员方法设计有些许问题,导致参数在方法里多次循环,浪费时间与内存。
5。总结:
这次是本学期最后一次作业。这学期学到很多java知识,能不能熟练运用就靠自己了。
1.首先关于正则表达式我觉得还是非常有必要将它弄懂,因为它在判断字符串时非常有用。效率很高很方便。
2.做每一个题目集是不要轻言放弃,要把自己能写的努力去写。
3.搞清楚类的关系,是关联 依赖 还是聚合 组合。方便设计类图。
4.学会仔细读题,不然最后出错要从头来过,重新设计,浪费时间精力。
5.在面向对象设计中,不要所有代码写在一个类,要分而治之,增加利用率,可读性。
在最后的学习阶段,学到了很多有用的知识,如集合框架,lambda ,正则表达式。
在许多细节方面,要多多学习,不能马虎,要熟练运用所学知识,如果不多加练习,终是
纸上谈兵,自己理解不深。
教学建议:
我觉得老师可以出一些比较中等的题目,能稍微给点提示,给出一个较为标准的答案,给那些没有头绪设计类关系的同学一些提示,不然自己研究很浪费时间精力,
在每次作业完结后,应该对难题进行讲解,让我们在写完题目集后,明白自己还有哪些不足。
在自我评价上,自己努力还不够,在遇到很难的问题,时间不够就会放弃,没有专心研究。可能自己有点懒惰吧。
希望自己以后能克服此类问题
标签:一次,最后,类图,initialCapacity,Blog,课程,设计,成绩,输入 From: https://www.cnblogs.com/bbbgk/p/17499094.html