博客作业

一.前言

第一次题目集:总共有八道题目。较为简单,主要是考验我们对于字符和字符串的输入与输出运用的熟练程度,考验我们一些最基本的语法,运用if语句,对数据进行判断,筛选,在if语句中嵌套if语句,这里会稍微有点绕,需要注意一下,在后面也是运用了数组,将数据进行储存,较为简单

第二次题目集:总共有五道题目。稍微有一点点复杂,需要加一些特殊的方法,需要将字符串转化为整数型,同时在这次题目集中还要用到排序法,如冒泡排序法,选择排序法等,将数据排序进行输出,在后两次作业中,还用到了更为高级的手段,即是用方法把功能写进去,依次来调用方法,进行运算,主要是用来判断年份的,难度中等,还是需要仔细思考的。

第三次题目集:总共有三道题。这次的题目难度就上去了,需要自学的东西挺多的,如正则表达式,类之间的调用,方法之间的调用,类与类之间的关系等,都需要自学,将其运用到该题目中,才能得以解决,对于每一题,特别是最后一题,要用到的正则表达式,是一大难点,需要花费很大的精力来解决这问题,对于类的调用要反复尝试,按照题目要求一一解决,需要考虑的情况增多。难度系数较大。

 

二.设计与心得

这次的作业总共有三次,每次作业都在考验我们对于java语法的运用,在几次作业中都在考验我们是否细心,是否仔细,对于很多简单的算法,我们往往会忽略很多细节上的东西,再写第二次作业的时候,就因为一个if语句,赶了我一个晚上的时间,最后才发现是if中的条件问题,这个条件出错了,将其中的对象搞错了,最后熬到深夜才发现,真的很会让人崩溃,所以说,在写作业的时候,要时刻注意自己的条件等细节方面,不然很容易出差错,好了废话不多说,看我下面的总结。

1.多运用if语句,for循环(第一次作业)

在第一次作业中,总共有8道题目,大多数都是运用了多次的if判断结构,来对数据进行判断,从而对数据进行一系列操作,将数据进行输出,从而达到所想要达到的结果,得到答案,且运用if嵌套,对数据进行多次筛选,最后得到最终答案,与此同时,在进行数据的输出时更是运用多次循环,对数据进行输出,对于部分题目来说,要运用冒泡排序法,对所需数据进行排序,然后进行输出,最终得到所需结果,而这次作业的重点在于第八题,第八题,算是这次作业里最难的一题,在第八题中,多次运用了if语句对其中的数据进行了判断,来判断数据是否符合相应结论的成立条件,而第八题里面,主要是对三角形的类型进行判断,三角形有很多种类型,有等腰三角形,有等边三角形,有直角三角形等各类三角形,对于不同的边有不同的类型,而我们先通过冒泡排序法对三条边的长度大小进行判断,进而得出该三角形是何种三角形,当输入的数据不合法时,不在所要求的数据范围内时,要求输出wrong format,在数据合法的时候,需要用 if语句对三条边进行判断从而得出该三角形是何种三角形,同时,在这道题目上,有一个难点就是,在判断该三角形是何种三角行后,还要判断他是该种三角形的何种子三角形,由这一点就足以看出一个人的逻辑性有多强,在if语句中,进行多次判断,从而得到最终结果,核心代码如下:

 

 2.对于年月日进行数据操作(第二次作业)

       在第二次作业里面,前两题主要是对数组进行运用和储存,第一题是运用数组对ip地址进行转换,将32位二进制码进行IP地址转换,然后对其进行输出,得到答案,在这之中,要运用到一些特殊的功能,将输入的字符串进行整数型转换,这题较为简单,第二题呢,就是输入两串数字,然后用排序法,对这些数据进行排序,从而得到想要的数据,这题主要考验的就是我们对于排序法运用的熟练程度,也没有什么难度,较为简单,然而从第三题开始,就难度上去了,其实对于后面三题做法都是相似的,做出来了一题,自然而然就能做出第二题,这三题是相同的,算法都差不多,极其类似,对于7-4这道题对于我们的要求就是,我们输入一个年份日期,然后对这个年数进行操作,然后就可以知道这个日期的下一天是什么时候,,然后对其进行输出。在代码一开始时,先要判断数据的合法性,如果数据超了范围,就对其输出wrong fomat,然后中止程序进行,这是这道题的第一步,也是最简单的一步,之后要对整个体系进行一个构建过程,在这道题目里,要有4个方法的存在,以便于对于数据进行判断和改变,每个方法有不同的功能,在public static boolean isLeapYear(int year)这个方法里面,我们要判断的是输入的该年份是否是闰年,然后对数据进行输出,返回一个布尔类型,在public static boolean checkInputValidity(int year,int month,int day);这个方法里面主要是判断数据是否合法,又是返回布尔类型,而这个public static void nextDate(int year,int month,int day)方法里,主要的作用是求日期的一天,在这个功能里,也是需要很强的逻辑性的,,在这之中,我们需要对其进行分类讨论,有可能输入的日期输在一个月的最后一天,也有可能是在一年的最后一天,同时还要根据上一种方法返回的布尔类型,再进行更为细致的判断,从而得到最终的答案下面这段代码就是对输入的日期的进行操作从而得到下一天

 

             

 

在这段代码里,主要就是分类思想比较重

而在(7-5)这道题里面,其实和7-4这道题目是相通的,在这道题目里面也可以引用(7-4)里面的部分代码进行小部分的修改,从而实现再7-5里的功能,这道题要求的就是我们输入一个日期,然后输入一个数字,求出这个日期的前几天,有了上一题的基础,这道题其实不怎么难,只是将上一题的那个求下一天的功能换成了求前几天的功能,只是需要稍微修改一下核心代码,对于输入的日子,只需要让他与输入的数字进行相加,得到的数据,让他和30或31进行相加或相减,在这道题目里面,我运用了太多的if else语句是的代码的复杂度大大的增加了,这样一来大大增加了程序的运行时间,实在的是有点拉跨,之后希

望能对其进行改进,在这里面最重要的一段代码莫过于闰年的年月日,在这方面的操作,还是有点复杂的,该段核心代码如下

 

 

 

 

可以说,这段代码,考验的也是我们的逻辑能力,虽然与上一题的有部分相同,但在其中也进行了部分修改,使得其能够实现相应的功能,这部分就相当于本题的重点,即是核心代码。

3.对于类的设计(第三次作业)

从这次作业,我们才真正开始了对于类的设计,通过这一次作业我相信我们对于类的运用,会更加的熟悉,在第一题中,就已经开始了对于类的设计,一开始的时候,要设计主类和子类,在这两个类里面,要实现相应的功能,在子类中有运用了许多的方法,实现多功能编程,在子类里,先定义几个私有变量,方便之后对于数据的存储,这一题主要要求我们能够成功的实现金钱的存入与取出,熟练运用有参和无参构造法,再通过给出的公式进行税率新的计算,最后计算出正确的余额在7-2这道题里面,给定了类图,需要实现的功能和上一次作业差不多,不过这次要让我们学会用类的方法,将其写出来,这里就只需要稍微改动一下,通过定义一个新的对象,来调用以下类中的方法,这题已经给出了类图,已经降低了难度,在类图中,给出了该题所需要的方法,而我们只需要按照类图的结构写出即可,这题同样是判断给出的年月日,来输出这天的下一天,运用类,根据类的封装性,将下列类一系列的方法进行引用,最后得出所需的结果,将后一天进行输出,其实在这一次作业中.

最难的是下面那一题,在这题里面,我们要做的就是对于多项式进行求导,最这里,我们要先输入一串字符串,也就是多项式,这种多项式求导这种运算是封闭性的,在这次作业里,我做的还不是很完美,最后一题还没有完全做出来,只做出来了一部分,这题开始时,要先判断输入的字符串是否符合表达式的基本规则,如果不符合,则输出wrong fomat,与此同时,题目给出了作业指导书,方便我们能够更好的理解题目,在指导书中有相关的概念说明,还有求导算法,和各种示例,在这道题里面,已经给出了很多提示,而这道题里面唯一的难点就是正则表达式,这属于我们要自学的内容,对于正则表达式,其有很多种用法,可以用他来进行匹配指定的字符串,从而对其进行输出,在程序开端,先用正则 表达式判断这个表达式是否合法,如果是合法的就对他进行下一步操作,运用替换功能将输入的字符串中的空格全部去除,然后再次使用匹配模式,将多项式进行分割,将多项式分别以字符串的形式存进字符串数组里面,然后在对字符串数组进行循环匹配,用特殊的符号将多项式单项的系数和指数分别再次提出来,熟练运用group,将数据一一提出来,存到一个数组里,最后将其循环输出,就得到了最后求导后的结果

 

 

 

三.踩坑心得感悟

(1)第一次题目集最后一题,在实现这段功能时,没有考虑三角形之间的嵌套关系,在其中运用if语句判断三角形的时候,出了点问题,得出了错误的结果,对于其中的逻辑关系,没有分清楚,导致出现了逻辑错误,对于等边三角行和等腰直角三角形的判断出现了混乱

 

 

(2),第二次题目集第一题,在进行二进制转化时,在进行用算法将其转化为整数型的时候,发现自己对于循环的运用还不是特别熟练需要加强,对于32为进制数的转换,将其分为四组,每一组有八位数字,将这八位数字,即字符串用Inter.parseInt强制转化为整数型,然后对其中的8位数单独用二进制的转换方法转换为整数型,进行求和,最后进行输出,这才是完整的思路,而对于我自己来说,当时没有这样想,看到题目的我,连题目的意思都没看懂,后面通过同学们的指点才知道,对于审题还得加强

 

(3)第二次题目集第四次作业,在判断下一年的时候容易忽略闰年的情况,在追求下一天的时候,也容易忽略月底的时候,要跳到下一个月,这个时候月份就要加一,而天数就变成了一,同理可知,到年底的时候,下一天月份归一,天数归一,但是年份要加一,这样的操作在下面的题目中也有用到过,需要进行多次分类,对于数据随机应变,这种很容易忽略的问题值得我们重视

 

(4)第三次题目集第一题,在这一题中要考虑的是金钱的存取,在进行金额操作时,因为没有考虑到取的金额与原有的金额之间的大小,导致最后的结果出现了错误,在这部分没有考虑到金额的变化超过了最大限度,导致了税率出现了问题,最后直接导致了输出的数据出现了错误,在做这类题目的时候,还是需要仔细审题,要学会提取题目中没有给出的信息,但是却隐藏在题目中的信息

 

(5)第三次题目集第三题,在做这题的时候,真的需要很大的耐心,一是学正则表达式的耐心,二是摸索导数的输出算法的耐心,这些都是对于我们这些程序员的考验之一,,对于这道题真的是处处碰壁,要运用正则表达式对指定的数据进行匹配,然后把他另外进行保存,再下一步就是对每一个小的字符串进行一系列操作,将每一个小的字符串再次进行匹配,将他的系数和指数匹配出来,存到数组里去最后合取进行输出,但是对于我做这道题,我考虑的还不是很充分,对于很多情况没有考虑到,最后只能过几个点。在这道题目里,我对于类的使用还不是特别熟练,有很多小瑕疵,而且还有一部分功能还没有实现,需要进行改善。

 

四.总结:对于作业,在这三次题目集中,我们对于字符串数组的运用更加熟练了,对于每个字符串的存取有了更高的感悟,同时运用循环,if语句对数据进行操作更加的熟练,当然,这只是我们学到的一小部分,更重要的是对于类,方法,对象,属性有了更加深刻的理解,对于这几者之间的关系,有了更加透彻的理解,同时对于他们之间的调用也有了一定的了解,方法即相当于C语言中的函数,每个方法都有对应的功能,可以到主函数中被调用,从而将其功能进行运用得到相应的结果,最后一题,就是那道求导题,在那之中用到了好多功能性类,用到了字符串的特定取出,将其转化为整数型,最后进行输出,同时在其中运用的更多的就是正则表达式了,正则表达式在这次作业里的作用被发挥的淋漓尽致,它可以用来匹配特定字符串通过这第三次题目集,我们对于正则表达式的用法掌握的更多了,运用起来更加熟练了,能够更好的匹配所需要的字符串,对于老师,老师的教学方法很是特别,可能对于大部分人来说,这是一种特别适合他们的方法,但对于我个人来说,因为我这个脑袋不是转得很快,所以说要自学的好,是一件极其艰难的事情,对于我来说课堂上的一点皮毛是远远不够的,更多的还是要靠自己的自学才能把java这门课程学号,课外的时间要好好利用起来,用于学习需要掌控的知识,还有这个布置的作业,难度真的是以指数型增长,,对于我们这些比较落后的同学来说真的是一个很大的挑战,不仅是身体上的,更多的是心理上的,需要我们有强大的心理素质,然后线下更是需要老师和同学们的互帮互助。

 

 

posted @ 2021-04-04 10:49  暗黯  阅读(93)  评论(0)    收藏  举报