• pta作业·博客第三篇


         

                                                                                                                                                                                                   Java博客第三篇

           本次pta作业主要围绕继承、多态的应用;ArrayList泛型的应用方法Comparable接口及泛型的应用以及单一职责原则的应用,“开-闭”原则的应用另外,还涉及到了封装、继承、多态抽象类接口。 List、Set或Map等重要知识点来写,我先说一下各次作业的大概内容和所用到的主要知识点。第一次pta三道题分别是图形卡片类排序和分组,主要让我们深入了解Comparable接口及泛型。第二次pta作业是雨刷设计类,用到的是关于类的封装、继承、多态抽象类接口等知识。第三次pta作业两道题分别是统计java关键词的字数,主要运用 List、Set或Map等知识。

    一.第一次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作业主要围绕继承、多态的应用;ArrayList泛型的应用方法Comparable接口及泛型的应用以及单一职责原则的应用,“开-闭”原则的应用另外,还涉及到了封装、继承、多态抽象类接口。 List、Set或Map等重要知识点来写,而且可以让我们深入了解Comparable接口及泛型。类的封装、继承、多态抽象类接口等知识。以及 List、Set或Map等知识。

            另外,这三次pta作业之间的关系我也不多说了,主要是关于封装、继承、多态等旧知识点的运用以及 ArrayList泛型的应用方法Comparable接口及泛型的应用以及单一职责原则的应用,和List、Set或Map等新知识点的运用。

            这三次pta也成功使得我们初步学会如何使用以及正确理解掌握封装、继承、多态等旧知识点的运用以及 ArrayList泛型的应用方法Comparable接口及泛型的应用以及单一职责原则的应用,和List、Set或Map等新知识点的运用。也感谢老师和各位同学的辛苦付出,希望各位在代码上的造诣越来越高,能一下写出一个代码,早日成为高手。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

  • 相关阅读:
    PHP的超全局变量
    Python 切片
    Python for else语句 以及 break和continue
    niceScroll 滚动条的用法
    python 短路求值或惰性求值
    python 中的 __name__
    python3 中的Counter函数
    谷歌浏览器 F12
    python reversed()的使用
    python字符串格式化% 操作符 {}操作符
  • 原文地址:https://www.cnblogs.com/kc-mosl/p/13055289.html
Copyright © 2020-2023  润新知