第二次大作业
前言
第二次java大作业,相比于第一次有了一点写博客的经验,之后的博客会再这次基础上继续完善的,后续也会不断改进这次博客,尽力做更好。
第一次作业(训练集4)
知识点
主要涉及类的构造和使用,也涉及到了循环语句,自动排序的使用,构造有参无参类,java中String类中split()的使用,Integer类中parseInt()等方法的使用,LocalDate类中of()、isAfter()、isBefore()、until()等方法的使用。
题量
一共7道题题量不算大,且整体代码行数偏少,除了第一题。
难度
第一题难度偏大,后面的最后一题学会新方法后也不难,其他题目难度都不难。
第二次作业(训练集5)
知识点
主要知识点为正则表达式,学习并掌握正则的用法,还有创建不同类来实现不同的功能。
题量
共六道题,且前四道为正则表达式的题,行数少,后两道计算日期的题目行数偏多,题量还可以。
难度
学会正则表达式之后前四道不难,但是前提要把正则学会和使用。后两道题目在之前的pta中做过类似的,但要求和解决方法不同,难度还是偏大,第六道更是再第五道基础上再添加新要求。
第三次作业(训练集6)
知识点
主要知识点为类的创建与构造,及类中各种功能的添加。
题量
共一道题,但据说代码千行,题量很大。
难度
难度很大,我没有做出来,之后回不断回来看这道题去尝试的。
设计与分析:
op训练集04:
题目7-2 (有重复的数据):
这题要在n个整数中找出重复的数字,判断是否有重复数字。我是先用Arrays.sort来对输入数组中的数字进行从小到大排序,第一次把第一项单独拿出来输出,后面的从第二项开始和前一项进行比较来判断是否相邻的数字相同来得出是否有重复数字,最后发现第一个数据重复判断不了且这个方法运行很慢。


改进之后从第二项开始与前一项来做比较,不单独拿出第一项,且用一个for就解决了查找重复的问题,运行速率也高了。


7-6 GPS测绘中度分秒转换
这道题是度分秒的转换,主要通过简单计算来互相转换,第一次用printf来全部输出,发现测试点2有错误,是printf中的输出保留有误。


更改之后通过两次分别输出保留小数的结果,结果就正确了。


7-7 判断两个日期的先后,计算间隔天数、周数
这题涉及到很多新知识,但学习一下都会,学会了就很方便了,涉及到Scanner类中nextLine()等方法、String类中split()等方法、Integer类中parseInt()等方法,LocalDate类中of()、isAfter()、isBefore()、until()等方法,ChronoUnit类中DAYS、WEEKS、MONTHS等单位的用法。但一开始没注意到两个日期合并用来一个算法来计算天数差,发现都算的是早多少天。


将两次日期分开来算就正确了。


op训练集05:
7-5 日期问题面向对象设计(聚合一)
这题是之前一次题目的更具体化,是一层层调用的过程。将不同的类作为上一个类的属性,一层层套用不同类中的属性实现的更全面复杂,年月日先各自分别设一个类,很好地把Day、Month和Year绑在一起,再设置一个计算日期的类来实现计算下n天前n天和两日期相差天数。但最后月越界测试检测点没有通过。



op训练集06:
这次题目集只有一道题,但开始就听说很难,就没有很上心了,开始就有点放弃了,而且看到一堆的文字说明就没有认真去看了,觉得没有什么思路,到最后再看时间也来不及了,就只能彻底放弃了。
踩坑心得
oop训练集4的7-6
这题开始转换分钟的时候除以的是60不是60.0,标准格式都应该是60.0,这样写会自动保留小数,之前就有过这种的错误,但总是会不注意到。

改进建议
1.注释太少,没有标注释的习惯,还是得有写注释的习惯,对于自己再次检查和别人查看都能很好的帮助理解,而且合理的注释可以提高效率,方便前后查找。
2.符号和计算中小数点的各种小问题,有些是编译器检测不到的毕竟不是语法错误,所以会导致最后结果出错时很难第一时间找到错误点,而且在之后代码更多更长的时候这种问题就会更严重,得更加注意。
总结
1.学到了什么:这次作业学到的东西也比较多,比如java中String类中split()的使用,Integer类中parseInt()等方法的使用,LocalDate类中of()、isAfter()、isBefore()、until()等方法的使用等等,还有正则表达式的使用也有了一些基础,对类的封装也进一步学习了。
2.需要进一步研究学习:菜单类的题目,难度很大,不能知难而退,要勇于尝试,就算没有全部做出来也要做多少算多少,不会就去学习,多下功夫。
3.改进建议:提升自己的学习能力和研究探索能力。
浙公网安备 33010602011771号