Java教程

第二次Blog

本文主要是介绍第二次Blog,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、前言

      经过一个多月的学习,我们对java的学习有了长足的进步,从一开始的啥也不会到现在类、接口啥的手到擒来,PTA上的题目最近一次也就是第六次还拿了满分,最近第二阶段的学习较上个阶段而言难度增加的幅度减少了不少。

(1)第四次题目:第四次题目难度很大,虽然就三道题,但第一题巨难,而且分值也很大,占了足足50分,写了半天也没有什么头绪,光是正则表达式都要写半天,然后还需要构造很多类,在类中还有许多函数等等,总之就是十分复杂,这一道题写了我四五天也就最后拿了5分,第三题算比较基础的了,但老师在我们写这个题目时并没有上到这里,所以是我自学的,还好比较简单,第二题是第一次接触聚合类,这次是日期聚合类,它分为了两次,在第四次作业的第二题和第五次作业的第四题中都有出现,不过是两种不同的聚合类。

(2)第五次题目:第五次作业在老师对我们填写调查问卷反映后,明显难度下降了,都是很基础的题,比如找出最长的单词、合并两个有序数组,这都是之前写过的题,这次题目最难的一个就是第四题了,统计java程序中关键词的出现次数,这题我都不知道关键词有哪些,而如何查找也不会,只能搭个基本框架就放那做不了了。

(3)第六次题目:第六次作业的难度又再一次刷新的最低难度,这次不拿满分都对不起自己学了这么久的java了,第一、三、四题都是基础的正则表达式的运用,经过这几道题我也是能完全掌握这种简单的数字正则表达式了,第五题是图形继承与多态,老师上课时有讲过的,第六题实现图形接口及多态性,也比较简单,根据类图就能写出来。

二、设计与分析

(1)第四次题目:第一题水文数据校验及处理,说实话,第一次看要求这么多,输入输出这么长的题目,着实无从下手,它需要判断日期,数据是否合法,而这就需要大量的一长串的正则表达式,然而那时我对正则表达式是一窍不通,所以这题我放弃了,最后也就拿了5分;第二题是日期问题面向对象设计聚合一,是第一次写这种这么多类的题,因为内容比较多我就先写了第三题,第三题是图形继承,虽然没学过但在网上看了下视频也就学会了,不是很难,就是运用一个extends和@Override进行类的继承,还是很好写的。第二题日期类,需要构造的类也很多,函数也很多,但是顺着类图一个个写过来,感觉好像也不是那么难,花了些时间也就写好了。最终这次题目也是只有这两道题的分数,都没及格,希望后面题目的难度可以多布置些基础的,这样才能学到知识,太难了只会空在那。

(2)第五次题目:第一题找出最长的单词,这就要使用到正则表达式和一个简单的循环,第二题合并两个有序数组是之前写过的,所以没啥讲的,第三题对整形数据进行排序,这道题就运用到一个简单的排序,第四题一个是最难的一题,统计java程序中关键字的出现次数,这道题我没拿到满分,这道题还是要运用到正则表达式,我不会,只能硬着头皮去看攻略,勉强写出来了,写了好几天,测试点还是有几个没过只好放弃了,总的来说,这道题不是很麻烦,但我不会是真的没办法;第五题是上次日期类的第二种聚合方式,在上次题目的基础上,改了日期的范围,输出和部分类的函数也不一样,但是却感觉清晰了很多,毕竟是第二次做了。这五道题让我对类的构造和使用还有聚合类有了更深的认识,这次的难度较之前的来说明显简单了不少,以后的作业好好写一定会有进步的。

(3)第六次题目:第六次题目集是继第一次题目集之后最简单的一次作业了,有三道正则表达式的数字匹配训练,这些题都十分的基础,不过分值较低,写了十来分钟就写完了,让我弄懂了如何使用正则表达式匹配数字,字符串的排序就是先对字符转ASCII码然后再进行排序,最后输出就行了。第五题图形继承与多态,涉及了新内容多态,多态实际上就是在类上抽象的再定义类的属性,运用abstract关键词进行修饰。第六题实行图形接口也是上课新学的,要创建一个Area的接口,用interface 进行创建,再用implements进行连接,总的来说还是十分简单的。这次的题目比较基础,但我感觉是我最近几次学的最清晰的一次了,之前写那种50分的大题目,根本拿不到什么分,就感觉很挫败,现在很明显的感觉这些知识点我都学会了。

(4)两种日期类聚合设计的优劣比较:日期类聚合一是从主类到DateUtil类到Day到Month到Year,而日期类聚合二是从DateUtil发散到Day、Month、Year,这样会更加方便,因为day、month、year都有共同的属性,要修改可以在DateUtil进行一次修改即可,但如果有单个需要修改,就会比较麻烦,而日期类聚合一就可以方便的进行单个类的修改,却无法进行多个一起修改。

(5)三种渐进式图形继承设计的思路与技术运用:从封装到继承到多态再到接口,我的感觉就是java真的是博大精深,对类的使用竟有如此多的方式,封装将抽象性函式接口的实现细节部分包装、隐藏起来,使得查重率大大降低;继承就是子类继承父类的特征和行为,使得子类对象具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为;多态是同一个行为具有多个不同表现形式或形态的能力;接口是抽象方法的集合。

(6)正则表达式技术总结:正则表达式这几次作业都有用到,主要是对字符和数字进行配对或查找,有Pattern类和Matcher类,用^匹配字符串的开始,用$匹配字符串的结尾,用{}进行数字出现次数的匹配查找。\d匹配数字,\n换行\r匹配回车\s匹配空白等等。

三、采坑心得

(1)像题目集四的第一题、题目集五的第四题,这些题写不来就别一直犟在那,浪费了很多时间也还是得不到分数,还不如不写。

(2)第五次题目集的第一道题,找出最长的单词,我一开始写的时候得了四分,有一个输入空白测试点错了,这也应该是我们写代码最容易错的了吧。下面附上代码:

String str = in.nextLine();
str.replace(",","");
str.replace(".", "");
String[] word = str.split(" ");
int max = word[0].length();
String maxWord = "";
for (int i = 0; i < word.length; i++) {
if(word[i].length()>max) {
max = Math.max(max, word[i].length());
maxWord = word[i];
}
}

 

 

(3)第四次题目集的第三题日期类聚合一,我这道题没拿满分,就是因为有日期越界测试点没过,后面经过改进通过了,下次还是要注意在函数外确定参数的范围,不能单单只在一个地方定义。

 

 四、改进建议

        总的来说,在这三次题目集中,我对java的认识越来越清晰了,写的代码也变得精炼不拖泥带水,也知道要对自己的代码进行包装,到类的学习,类的继承,封装,多态,接口,在以后的编程和写作业的过程中,我会更加注重类的封装,争取写出更高质量的代码,而不是像这几次写的较为一般,在以后的学习中,我会好好的认真听老师上课教的,下课在课外也要自学,多花一些时间在打代码上,多研究代码,这样才能做一名合格的程序员。

五、总结

        这三次题目集,让我学到了类的封装、继承、多态、接口,这些内容中我对类的继承学的较好,是在老师上课时就学会了的,多态和接口在下课看了视频之后也学会了,这些内容还是不算很难,这三次的题目集难度是从难变简单了,第四次的水文是真的写的头皮发麻,第六次的也是比较简单但学到了东西,写的很有成就感。第二阶段的学习,是java的主要部分的学习,这些知识在java的主体中占据很重要的一部分,下个阶段将是进阶的学习,我会做好准备迎接挑战,学好java。

        对于教师等其他的方面,我没什么意见,因为在我看来,老师这段时间讲的很细,让学生更好的理解并掌握知识。老师上课虽然讲的很多,但主要还是要靠自己去多钻研,多思考,不能一味的靠老师,大学本来就是自学的地方,靠的是自觉和自律,为了以后能找到好工作,现在就要好好学好这门专业课,做到专精。

这篇关于第二次Blog的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!