blog2对PTA4,5,6集的习题总结
一、 前言
通过本三次PTA得题目,我受益匪浅。题量的话不算太多,但是题目难度有些大。在本次PTA第六次题目集中,题目难度较中,第四次题目集第一道水文数据处理与第五次题目集的查询关键字出现次数题目难度较大。也正是通过本三次题目集的学习,我对正则表达式有了更深的理解,学会了如何使用正则表达式,对使用正则表达式进步了许多。谈到知识点的话当然第一就是正则表达式了,接下来还学了如何使用类的封装与继承,如何在子类中调用父类的方法。
二、 设计与分析
通过本三次PTA题目的学习,我分析了我的源代码,分析其是如何运行的。接下来先谈谈第四次题目集的第一题水文数据:
当然,这道题目我也没拿满分,有2个测试点错误,找不到原因,令我很头疼。这道题的根本在于使用正则表达式分离出水文里面的每项数据,然后依个进行检验。首先我们分离出水文数据中的每项数据并存入数组中,此过程要使用split:
然后使用for嵌套循环对里面数据一项一项检验,此过程检验每项正则表达式为:
若检验不相符则输出“Wrong Format”。若检验数据相符,则按照题目要求计算出流量。
在来看看第四次题目集第二题与第五次题目集最后一题:
第四次题目集第二题有5个类分别是Main,Year,Month,Day,DateUtil,其中Main是主类,Year,Month,Day,DateUtil分别是继承关系。依次继承:Month继承Year,Day继承Month,DateUtil继承Day。我认为本题类图思路清晰,但是结构较复杂。每个类中方法很多,并且都需要setter/getter对变量进行处理。本题需要实现的三个功能分别为:1、求前N天,2、求下N天,3、求2个日期相差的天数。源代码实现如下:
对于第三个功能,我分别求出2个日期距公元1月1日的天数,然后在用2个总天数相减求得。下面为本题的生成报表内容:
对于第五次作业最后一题,方法与第四次作业第二题相似,只是类图不同。此题类图清晰,思路也简单,其中Dateutil为Day,Month,Year的父类,而Day与Month,Year为单独类,三者之间无直接关系。这样写降低了代码的连续性,关联性,但是提高了代码出容错率。
此题求三个功能的方法与上题基本一致,在此就不做过多讲解。但需要注意的是本题有一个测试点为整形最大数测试,也就意味着最后求出来的天数可能超出整形最大数限制,因此需要将int改为long型。
下面为此题的生成报表内容:、
接下来谈谈题目集4中的第三题图形的继承:
首先要明确类与类之间的关系,哪些类为父类,哪些类为子类。其次要实验类与类之间的继承,实现形式为public class A extends B,此代码说明A是B的子类。
以下为本题中类的继承源代码:
本题目的是求以下规则图形的面积与体积,只需将其方法定义在类中即可,面积与体积计算公式较简单,就不做过多介绍。
现在来说说第六次作业的第五题:
第六次作业第五题使用的技术有类的继承,类的封装,类的多态与接口,Arraylist数组以及Collections类。
首先先创建一些需要的类,既题意要求。
然后分别在类中定义变量并将其封装:
之后定义类ArrayList数组的一个对象:
之后运用类的多态性,创建数组:
在后面通过for循环,将需要输出的面积存入ArratList数组中:
下面为本题生成报表内容:
下面来谈谈PTA第六次题目集的第六题:
本题需要使用接口:
下面为本题类图:
本题要求输出三角形面积与矩形面积,若输入错误,则输出“Wrong Format”.
源代码如下:
注意需要保留2位
小数,可用String.foramt(“%.2f”,变量);
下面为本题生成报表内容:
接下来我们来分析以下题目集4,5,6中所有正则表达式的运用:
首先,如要声明一字符串变量str,要让S匹配一字符串,则;
第一行括号里为一正则表达式,随机匹配4个数字或字母。
如果匹配成功,即m.find()==true,则m.group()为匹配的项。(注意:m.find()只能返回boolean型)
当然,需要使用正则表达式时,必须引类
现在来说说JAVA集合框架总结分析:
一:框架图
通过查询资料,以下为JAVA框架图:
二:框架分析
(1)点线框表示接口,实线框表示具体的类。
(2)常用的List、Set、Queue、Map都属于集合类。前三个都是继承自Collection,但是Map不是。
(3)List不仅可以生成普通的Iterator(因为继承自Collection),还能生成ListIterator。
(4)常用的类ArrayList、LinkedList、HashSet、HashMap。这几个类请好好研读JDK源码
(5)其它需要好好掌握的容器:CopyOnWriteArrayList、TreeSet、TreeMap、HashTable、LinkedHashMap、ConcurrentHashMap。
三、采坑心得
1、对字符串数字进行运算时,我将其强制转化为Int型,但是运行不了。截图如下;
但是当我强制转化Double型时,就可以运行了。截图如下:
2、当我计算圆的面积时,我把PI当成3.14159运算,发现结果有时正确,有时误差0.01;
后面调试了好久,发现可以用Math.PI来运算。
3、对字符串排序时,可以直接比较大小,即通过ASCII码进行比较,我还叫它们强制转化为int型,多此一举了。
4、有时题目对变量说明小于等于0时,输出“Wrong Format”,而我却写出其小于0时,输出“Wrong Format”,之后等于0的测试点就一致过不了,检查很久采检查出来。
四、改进建议
1、老师授课的方式非常适合我们,他根据本课程知识结构的特点,重点突出,层次分明。理论和实际相结合,通过例题使知识更条理化。但授课速度有点快,来不及记录。
2、老师发布作业的题目难度有些偏大,一些题目需要上网查询资料才能勉强写出一点点。这样会使同学之间代码查重率增高,所以希望老师降低题目难度,让我在能够学习好基础知识的情况下还能把题目都做出来。
3、老师上课有时非常严格,是非常有教授风度的,但是希望老师适当幽默一些,缓解紧张的课堂气氛,让我们学的更放松一点。
五、总结
通过本次PTA题目集4,5,6的学习,我对JAVA的学习更深入了,学习了正则表达式的运用,类的基本概念,如何创建类,学会了类的继承,了解了类的多态与接口。
当然,我的学习还是不完美的,我还要对一些相关的基础知识进行巩固,我的JAVA基础只是还了解的不够透彻。还需要多看教材多看书。
我希望老师能够让课堂变的幽默一点,在sign里面布置的题目能够给多点时间去写。
我希望课程能够把知识点讲的详细一点,因为有些知识太抽象,很难一时半会理解,所以希望老师讲的详细一些。
我希望作业量可以适当加一些,但是难度减小一点,达到能让我们学习好专业知识并且也有能力把作业写完。
我希望在课上老师能够布置适当的练习,保证我们能做完的前提下,不耽误老师自己的上课进度。
在课下,我希望老师别一次性布置太多作业,因为别的科目,比如高数,现代,英语作业也很多,希望老师能理解我们的苦处。