第一次博客作业总结

一、前言

1、作业感悟

第一次作业刚接触JAVA还有一些不太适应,经过前三次作业的完成我逐渐对JAVA有一点点理解,JAVA可以说与C语言相比较来说功能更加完善。在JAVA中我们接触到面向对象这一名词,也是JAVA的魅力所在。

JAVA面对对象具有封装性、继承性,能更好的提高代码的利用效率。作业总结能更好的认识我们在各方面不足的,和有待改进的地方,更清晰的了解自己。在代码的测试上很显然我的代码可用性并不是很高。

作业的迭代难度提高,每一次都学到不同的方法可能一次作业的一道题目就要花费一下午乃至一天的时间,通过题目我们考虑问题方面更加全面,在每一次的题目中不断提高自己才是学科的魅力。每天在CSDN的资料中反复查找,每天都i要在JAVA书上找知识点。每发现一个知识点都要记笔记,感觉像寻宝游戏一样。总在一两个测试点过不去而纠结,也突然明白该放手总要放手不要在一个点纠结太长时间。可能我在敲代码时候不够规范,以后我会更加严格要求自己。JAVA题目的学习根本停不来不断在后台测试检测自己代码还有哪些点没过。一天提交40多次也已经变成日常,这才刚刚开始还要继续努力。

(1)第一次概括

第一次题目集:

第一次题目集更偏向基础的编程能力,感觉是内容和C语言思路出入不太大,更多是语法和C截然不同我们在寻找语法上走了不少弯路。在每一次的报错中逐渐迷失方向,还好有同学指点,加上一些博主的经验之谈

才顺利完成作业。第一次用到的知识点非常的基础:关于标准的输入、输出的考核;简单的加减法计算;if-else(switch)和for(while)循环的考核;循环、判断的嵌套等一系列简单算法。经过第一次八题的练习JAVA学习根本停不下来。

第二次题目集:

第二次题目集相较于第一次题目集难度有所增加,主要应用的知识点:字符串的存储、字符串的转换、数组的运用,第一次接触到封装性调用方法来完成(面向对象)。算法较上一次有所提高,但是我还是应用

C语言的for和if语句的嵌套来完成,还有待改进。

第三次题目集:

第三次题目是前两次作业升级版,我习惯叫第二次作业2.0较第二次题目集题量有所减少仅仅三道题目留给我们十天时间,刚开始前两道题还算顺利很明显我小看题目集的第三题也是给我上一课,一道题从思路到上手实现用了7天时间,正则表达式现在我自认为还是不太理解调用的方法现在回头看有点陌生,就是感觉理解还是比较肤浅,让我明白以后题目要提前看不要以为自己能轻松应对。经过这几天的第三题练习

我仅仅得到75分有些点不过后来想想就是思路有点问题,更多是求导的问题很严重。以后我还要多学习,不要一条路走到黑与同学多交流也许我的分数还能在提高一些,第三题从拆分到设计断点都掉用了JAVA中不同的函数,也是第一次做题那么无助真的是刚开始一点思路没有。天真的以为用C语言的思路来思考怎么实现,出发点已经错了这就造成我后面的代码比较赶应该接受新的方法这也许C可能要用好多for和if嵌套的问题一个方法就可实现。总结还是自己思考和学习方式有问题,以后还要多多改进。

(2)自我总结

思考方式还停留在C的层面,刚接触对象和类的说法面向对象封装性经过三次题目集才有所理解。书还是不太熟悉,一些知识点在书上有明确标注,但是我还是在用我的C方法实现。在之后我在题目集三的第三题前两天看网课和书本上的相关知识,后几天才开始敲代码。刚开始还是比较抵触因为一道题卡这一天都没思路就很崩溃,有时候又想放弃。但是现在回顾第三次题目集取得分数不理想但是收获还是很多,最起码完成第三题,有些点虽然没过但是调用的方法已经有清晰的认识。一些知识点让我加深了我和CSDN和百度的感情博主的一些见解让我自我定位更加清晰,我还是一个JAVA小白,要学习的知识点还有很多。

二、设计与分析

第一次题目集:

第八题

 此题是对输入的三角形的三条边,判断该三角形为什么类型的三角形,for和if语句嵌套。

 

 

 

 一共43行代码圈复杂度18for和if-else用的比较多判断三角形是否合法和其类型,刚开始还停留在C的思维所以复杂度较高,没有JAVA面对对象的性质和理解,就是往上堆语句,积累经验希望下次能做的更好。

只有一个主方法,非常不规范的写法后期应该继续改进。

 

做题心得:直角三角形那个点一直过不去,在同学的提醒下我才发现是我考虑欠佳,比如判断是否为直角三角形用的勾股定理,c^2 == a^2+b^2 因为计算机用的是用16进制存储浮点数,在16进制转化为十进制的时候有可能会出现精度丢失,导致一些误差的出现。在eclipse中输入3.4*3.4结果11.560000001没有达到预期效果。解决方法在我和室友讨论中逐渐浮现解决方法有很多,其中一种就是判断相减是否小于某精度。在圈复杂度建议if-else换成switch能减少复杂度。

第二次题目集

第四题

题目要求输入年月日的值(均为整型数),输出该日期的下一天。也是if-else语句嵌套for语句嵌套还是习惯用C的想法来完成。

 

 

 

 此题圈复杂度也很高,深度也是很高。相比老师实现的圈数我还差的远,有初步的封装性,主类和副类两类实现个是判断是否为闰年,判断输入是否合法、规范;判断月份的天数,输出下一天的日期。用C的想法完成相对容易。

 

 

 思路还算清晰,对于我这个JAVA小白来说代码还有很大的改进空间。

改进建议:分类:将日期分为一个类。isLeapYear()、numOfDays()、checkInputValidity()、nextDate()作为该类的方法进行封装。

 第五题

题目要求入年月日的值(均为整型数),同时输入一个取值范围在[-10,10] 之间的整型数n,输出该日期的前n天。圈复杂度也是很高,在第四题的基础上进行改进。

 

 

 

 

 

 此题封装性不是很好,一次通过。

改进建议:分类:将日期分为一个类。isLeapYear()、numOfDays()、checkInputValidity()、nextDate()作为该类的方法进行封装。

第三次题目集

第二题

定义一个类Date,包含三个私有属性年(year)、月(month)、日(day),均为整型数,其中:年份的合法取值范围为[1900,2000] ,月份合法取值范围为[1,12] ,日期合法取值范围为[1,31] 、

我生成的类图跟老师给的题目类图相似很大。

 

 该题一共有两个类一个主类另一个是副类,主类调用副类方法,副类主要写方法有三个私有变量,分别是year,month和day,还有一个普通变量mon_maxnum(用来存储每个月的天数的数组)。

 

 

 此题圈复杂度也是很高,刚入门JAVA for 和if-else语句经常用,距离合格的代码还有很大差距。

心得:对月份和天数也是if-else的嵌套使用。

第三题

编写程序性,实现对简单多项式的导函数进行求解。

 

 这道题存在的问题很大,刚开始没有摸清题目大体思路,之后想用C的想法进行求导的和分式进行拆分,但是根本实现不了。正则表达式刚开始根本不会用,看视频看指导书。才有一点思路,就算我应用正则表达式我的圈复杂度还是很高,最后题目野有5个点没过,代码要求也只是实现了一部分,第三题存在的问题很大,课后和同学探讨才对自己代码缺少的功能有了进一步了解。

 

 一共三个类主类,字符串查找类,另一个实现求导,JAVA面向对象在这到第三题才能体现出来,封装性类与类之间方法的调用关系。应用正则表达式,圈复杂度有所减少。

解题思路:利用正则表达式对该输入的多项式进行拆分,之后对每一项分别求导。

心得:正则表达式的应用提取每一项,不知道怎么存储匹配到的单项,经过同学的提醒和帮助才完成分类匹配等一系列功能

(三)总结

通过三次的作业练习我发现,自己对JAVA还不是很了解,存在的问题很大,C的思维一直都在,每次遇到问题都是想应用之前学过的知识去处理问题,没有想过应该去学习新的知识去解决新的问题。这是我学习上欠缺的地方也是我日后应该加强的地方,以后的题目集中我应该降低自己的圈复杂度,对JAVA的面向对象有了初步的理解,封装性目前也知道应该如何去实现,JAVA语言较之前学C有很大的不同,它真的是从个性化的方式去实现生活中遇到的问题,这三次题目集有很多我们日常生活中所面临的实际问题,更贴近生活。在以后的题目中我应该更加严格要求自己,不能只是局限在完成作业为目的,更应该从实际问题出发,考虑多个方面来完善自己的代码,未来的路很长,

 

 

 

 

posted @ 2021-04-04 13:56  无情码农敲就完了  阅读(59)  评论(0)    收藏  举报