关于第一个月学习JAVA的总结和心得
作为一名刚刚接触JAVA的初学者,在学习的过程中也遇到了不少问题,从习惯C语言的编写方式转变到JAVA在最初也是感觉到了有些不适。接下来我就通过我编写最近三次的PTA题目集来反思一些自己的问题。
这是我第一次的题目集,都是一些非常简单基础的题目,但是我觉得这是一次让我们能更快融入到JAVA的学习中的训练。这些题目如果用C语言的话是就是非常的快就能解决,但是用JAVA的话就要更繁琐一些,举个简单的例子就是第八题,我记得其中有个测试点是判断是否为直角三角形,这个点当时我想的就是,两直角边平方之和等于斜边平方,但是很显然我错了,错的原因就是JAVA里面小数的精度计算和C语言不同,会出现误差,就导致当三角形的边不是整数时两直角边平方之和无法等于斜边平方之和。
要改成两直角边平方之和与斜边平方只差满足在一个很小的误差里面才能通过,就这么一个小地方,当时还让我苦恼了很久,我觉得这就是对JAVA的一些基础知识都还没完全掌握好吧,也没有从原来的思维方式转化过来,于是之后,我对于一些问题都会有更深层的思考,对于基础知识的学习更加看重,确实有些时候让你困扰的并不是什么很难的知识不会,反而是一些让你容易忽视的小错误,让你久久发现不了。
在第二次题目集当中,我记得这个题目集是我从星期天的上午九点开始做,做到下午五点拿到满分,除去中间吃饭休息的时间,大概一共花了六个小时,当时我觉得花的时间不算很多,但是现在我看来,我是浪费了很多时间。第二次题目集前面两道是很简单的,但是后面三道,难度稍微有点大。写这道题目的时候开始的时候还算顺利花费了一些时间能够正常运行,但是当时一直有一两个点无法通过。
我记忆深刻的就是这个,当时可能是脑袋没转过来,就觉得平年哪来的29号啊,然后就卡了很久,就没想到这个可能是个判断是否错误的测试点,然后还有就是在这个题目我用了一个特别笨的方法
我感觉自己是有点蠢了,费老大劲把这个写出来,而且在写的过程中还容易出现打错了某个数字的情况,这就导致我好几次明明都逻辑啥的都没问题,结果就是错了,然后被卡了好久,心态都收到了影响。而且这个东西写出来真没有技术含量,感觉就是为了做作业写的一次性代码,老师也批评过了这种不动脑子的行为。觉得以后对于一些问题,自己应该多一些思考,对于一个问题的解决方法应该打开自己的思维。不要为了完成任务一样去写程序。应该考虑到自己写的这个代码是否足够的健壮,足够经得起一些强度比较高的测试。
最后说一点,关于这道题,就是一定要把自己写的每个判断条件写清楚,这道题卡我最久的其实是
这个地方,我当时把这个条件写快了,然后打错了,结果就一直找不到错误,最后还是因为在我写下一道题时,要用到这部分,然后发现了。所以切记以后一定要看清楚自己写的判断条件,毕竟这玩意你写错了也不会报错。
然后第四题吧,这道题我解决的反而更快,因为有些部分可以直接借用上一题的代码,所以节省了很多的时间,我记得这道题大概用来二十几分中就满分了,没遇到什么坑。但是这到题出现了一个问题就是圈复杂度比较高,至于原因就是if else用多了,如果不是老师说这个问题,我可能很久之后才会还有这种讲究。
所以啊,以后写代码要尽量去避免,可能刚开始去改变还有点难但是,我相信每天的一点点改变,时间久了也会有一个长足的进步。
最后说一下第五题,这道题目,当时我好像就是卡在这个地方卡了很久
当时好像是没想到就是跨年可以往回跨。其他没啥大问题。
然后还有就是圈复杂度也比较高,比较当时都是同样的思考方式写的题。
最后第三次作业
这次作业主要是让我们熟悉关于java里面类的运用,更加深刻的了解一下关于私有属性的特性。
就第二题来说,其实和第二次作业里面求日期的题目相差不大,有差异的地方就是对于年月日三个属性要变为私有属性。然后逻辑上并没有太大的变化,所以我也是偷懒了一波,把之前写过的代码又拿过来用,当时还有点沾沾自喜,觉得题目很简单嘛,但是之后有被老师批评了,说是垃圾代码的重复运用。哎,确实是有点太过省事了。所以这也体现了,第一次就要把代码写好的重要性,使得代码的复用性得到一个大的提高。
在这里主要讲一下第三题,这个题目是真的折磨我,虽然说这个题目我最后还是拿了满分,但是我自己也知道我这个代码写的是真的很烂。
先一眼看过去,这个圈复杂度就高的很。而且这个代码我没用类分块写,导致我连类图都生成不出来。
说一下写这道题目的心路历程。
在写这道题之前,老师说让我们先自学一下正则表达式,但是刚开始学的时候是真的很摸不着边,就感觉很懵。所以最开始学的时候,不是那么有动力,感觉就很懈怠,但是后来作业截至的时间就快到了,而且看到很多同学都已经95分了,当时就感觉很不是滋味。所以就下定决心要把它解决,然后再离题目还要3天结束的时候把正则表达式学会了。然后就开始干代码,前前后后大概写了三个半小时,可以正常运行,结果第一次提交只得了五分,很难受,当时感觉心态要炸了。就根本没有仔细去想要用类的方法去好好构造代码的框架。心里就只想着怎么得分。然后就开始输入各种形式的一元多项式,去测那种类型的多项式运行不了,然后就慢慢改。一直到截至日期的前一天早上,终于得了95分,当时还有最后一个测试点过,
就是这个,我大概是测了两个多小时都还没有结果,当时有点打算放弃了,想着满分的人就一个,写不出来也没啥。最后这个测试点能过还是有同学的帮助,有个同学测了五个小时,终于把它测了出来,然后这个测试点是我万万没想到的,居然是常数项前面输出不能有加号,我想着正常情况不是应该有加号吗,我当时是很无语。不过这可能也是老师想考验我们吧。
最后总结就是这道题,让我学会了正则表达式,但是没有让我更好的去熟练对于类的运用和设计,自己没有把训练的效果达到最佳。同时正因为没有去好好设计代码,导致自己又成了if else“大师”。对于比较难的题目真的需要提前去准备,在学习新东西时,要更加耐心,毕竟时间不够的话会真的使自己的代码质量大大折扣。
好了,以上就是我对第一个月Java学习的总结心得。