Java博客课程小结
今年是大二下学期,六月份下的太阳显得特别热,而在此时,java课程也悄然进入了尾生。大半年来java的学习,感触良生,由最开始什么也不懂的新手,变成现在略懂一些的菜鸟,其中的经厉不言而喻,也许课程学习过程中有些不合理,本人的学习方法也有些不合理,但此时此刻,也不得不来一次小小的总结了。
Java作业一共包含了九次pta,每次的难度都各有千秋,复杂度也逐渐在提升,由于第三次写博客时未进行总结,所以本文将以第三次作业为主,前两次为辅,并以java知识点以及本人的学习经历为主线进行概述。
第三次pta作业主要围绕继承、多态的应用;ArrayList泛型的应用方法Comparable接口及泛型的应用以及单一职责原则的应用,“开-闭”原则的应用另外,还涉及到了封装、继承、多态抽象类接口。 List、Set或Map等重要知识点来写,我先说一下各次作业的大概内容和所用到的主要知识点。第一次pta三道题分别是图形卡片类排序和分组,主要让我们深入了解Comparable接口及泛型。第二次pta作业是雨刷设计类,用到的是关于类的封装、继承、多态抽象类接口等知识。第三次pta作业两道题分别是统计java关键词的字数,主要运用 List、Set或Map等知识。可以看到,本次pta时涵盖了学习java时整个学期所学的重要知识点进行出题,其目的不言而喻。为了让学生们更好的理解java常见知识点及其用法,老师们可谓是煞费苦心,专出一些综合性题目来整理学生,让学生对java学习更加乐此不疲。下面将着重介绍上述所讲内容。
一.第七次pta
第一次pta作业是雨刷设计类,之前老师也在课堂上花时间讲了一下如何设计雨刷,以及设计雨刷时的一般思想。当时也写了关于普通雨刷类的程序代码。而本次pta最大的不同就是在当时雨刷代码的基础上,再度添加一些功能,使得该雨刷程序能够满足不一样汽车的要求。为了符合java的程序代码设计规则,需要使用到java中一些常见的代码规则,比如单一职责原则的应用,“开-闭”原则的应用另外,还涉及到了封装、继承、多态抽象类接口等知识。
本次的雨刷类uml图如下:
可以看到,添加了很多程序,但都符合java的单一设计职责,以及封装,继承和多态的使用。代码的测试部分也很正常,
除了一些正常测试外,还加入了必要的非法测试以及部分升档降档测试,本次代码由于之前写过,写起来遇到的问题也不多,同时在一些细节处理上,不会的也和同学探讨了一下,使得本次实验得以顺利完成。再就是遇到几个小问题,一直改不出,特别是临界点的问题,比如输入的是
这些关于超出界限的问题,后来干脆放到一个类中,才把问题解决。
二.第八次pta
本次pta写的是 统计Java程序中关键词的出现次数 ,涉及了List、Set或Map等知识,其中有好多种思路可以选择,但是因为自身代码储备量原因,最后不得不写了一个又长又简单的代码,以及使用了list方法。
思路就是把一段文字中的各个字按照逗号,句号等分开,即
StringTokenizer st=newst=new StringTokenizer(list.get(k), " ,?.!():""'' #[](){};.") ;// 按逗号/空格/叹号分割,其他字符自行添加
再把产生的各个分开的单词给存进list数组中,然后在list数组中按照字典顺序进行排序。最后输出即可。
其中主要代码如下:
for(int k=0;k<list.size();k++) {
if (list.get(k).startsWith("//")) continue; //不处理单行注释
// StringTokenizer st = new StringTokenizer(list.get(k), "/, !*(/*{};[]).+-=`~!@#$%^&?><://") ;// 按逗号/空格/叹号分割,其他字符自行添加
StringTokenizer st = new StringTokenizer(list.get(k), " ,?.!():""'' #[](){};.") ;// 按逗号/空格/叹号分割,其他字符自行添加
while (st.hasMoreElements()) {
//if(st.nextElement()!="/")
//System.out.println(st.nextElement());
juzi1=(String) st.nextElement();
list1.add(juzi1);
//else break;
}
}
添加的额外代码则是把五十多个关键字手动排序,这样子方便以后输出·,而且不用再次排序,唯一的缺点是代码量高,要解决的bug也不少。
先讲讲代码中提到的可以解决问题的思路,当时和其他人讨论了一下,老师在课堂上也提及了一部分思路,可最后动起手来写代码的时候,才发现动嘴说说是真的不会闪到腰,说起来简单无比。一般大众化的思路是把一篇文章中的各个代码按照空格,逗号句号等各个标点符号分开来,遇到换行的情况则是先把一篇文章中的每一行单独取出,然后对每一行代码进行处理,这样写的缺点是处理多行注释时不好解决,所以后来又改进了代码,使得程=程序得以顺利实现。
本次pta五百来行的代码真的是不容易写,在处理了一个个bug之后,又要解决各个部分之间的关联情况,解决完之后,还要整体检查代码,使得可以运行无阻。经过一段时间的敲写之后,才得以实现代码的正常运行。
再来一个运行截图,看看成果:
总的来说,这次pta并不简单,一些问题始终没有解决。在时间结束之后,同学们才相互探讨怎么写,代码最终也是运行成功了//。
三.第九次pta
本次pta写的主要是关于表达式求值的代码,即编写程序,从键盘输入一个合法的表达式,并对该表达式进行求值并输出。利用的是堆栈的知识点,需要用到各个数据结构中堆栈的应用,
Status InitStack(SqStack *S){
S->base = (SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));
if(!S->base)
exit(OVERFLOW);
S->top=S->base;
S->stacksize=STACK_INIT_SIZE;
return OK;
}
像这个判断栈是否为空等等数据结构中的算法。
以及
Status StackEmpty(SqStack S){
if(S.top == S.base)
return TRUE;
else
return FALSE;
}
返回栈顶算法
Status GetTop(SqStack S, SElemType *e){
if(S.top == S.base)
return ERROR;
*e = *(S.top-1);
return OK;
}
和有关栈的插入算法。最后我也就不有所隐瞒了,由于对本次知识点的不熟悉,以及不想写pta之外,所以就随便写了个
System.out.println("Wrong Format");
的代码,同样,也来一个运行结果截图:
本次作业也算是到此为止。
四.总结
通过这九次pta的学习,可以看到,pta上的作业主要围绕继承、多态的应用;ArrayList泛型的应用方法Comparable接口及泛型的应用以及单一职责原则的应用,“开-闭”原则的应用另外,还涉及到了封装、继承、多态抽象类接口。 List、Set或Map等重要知识点来写,而且可以让我们深入了解Comparable接口及泛型。类的封装、继承、多态抽象类接口等知识,以及 List、Set或Map等知识。这些知识点在java中都算是顶梁柱般的存在,
另外,各个pta作业之间的关系我也不多说了,主要是关于封装、继承、多态等旧知识点的运用以及 ArrayList泛型的应用方法Comparable接口及泛型的应用以及单一职责原则的应用,和List、Set或Map等新知识点的运用。
本学期pta也成功使得我们初步学会如何使用以及正确理解掌握封装、继承、多态等旧知识点的运用以及 ArrayList泛型的应用方法Comparable接口及泛型的应用以及单一职责原则的应用,和List、Set或Map等新知识点的运用。也感谢老师和各位同学的辛苦付出,希望各位在代码上的造诣越来越高,能一下写出一个代码,早日成为高手。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。