第一次

1:前言与踩坑心得。

第一次作业的题量比较多有8道题目,但是也是最简单的一次作业,基本上只要花时间c语言有一点点基础的同学都能做出来,第一道题计算两个数之和,要用到输入框,而Java输入框必须有Scanner input = new Scanner(System.in); 类之前且必须有 import java.util.Scanner;   至于第二道题目,难度想对于第一道题目来说确实难度提升了一些,但也只是对于A~Z,a~z的阿斯克码值的应用,也算是简单的题目,只是相对现在的我们来说,只会用很多if,else if 导致整体代码质量下降,甚至被称为垃圾代码。 第三题我感觉比第二道题目要简单,因为只需要输入数据,判断是A,B,C,D,E就算完成了。第四题是第一次作业里面最难的题目了,首先是对于整型和浮点型的考量,其次要对于是哪种人群作判断所以这里需要用到switch,再之后就是对于各种情况的判断和所对应的各种答案了,主要是太繁琐了,对于现在的我们来说,要用太多的if,else if ,导致代码量很多,并且会被称为垃圾代码,代码量是第一次作业里面最多的,导致题目要花上一些时间,题目显得也会比较难,但是由于c语言里面写过这道题目,难度也不会太大。第五题难度不大,主要就是考察数据类型的强制转换,从double型转变为int型,例如 int A = (int) a; a一开始是double或者float 型 都会变成不含小数的 A ,难度不大。第六题题目难度低,主要就是对于数组知识点的运用,需要用到 int a[] = new int[5]; 以及对于数组的遍历,如 for(int i=0;i<5;i++){a[i] = input.nextInt();} 的遍历 , 把数据 一个个的输入进去。 第七题也是要运用数组的题目,不过一开始数组的空间大小,需要先输入一个数来定义它的空间大小,之后就是 对于 所输入n个数据的从小到大的排序,需要用到冒泡排序 或者 选择排序方法,最后一个知识点就是System.out.println(" ");是每输出就需要换行,而System.out,print(" ");是输出后不需要换行。第八题难度算是第一次作业里面很难的了,主要是逻辑方面对于是否是三角以及能构成三角形之后是何种三角的判断以及输出,对于if else if 的运用会较多,导致代码质量下降,成为所谓的垃圾代码。

 

第二次作业的题量一般,但是也有五题的量,肯定的,题目量减少了,难度肯定会升高一些,说实在的,我感觉第一题不难,但是总是出问题,第一题是我第二次作业写的最久的题目,对于IP地址的转换,我是用x.charAt()来提取一部分的数据,再通过一个个计算相加得到相应的十进制数,但其中总是会出问题,最后花了我很多时间。第二题是第二次作业最简单的题目,主要在于输入前后对于一个个数组位置的放置,其次是对于把两个数组数据放入一个数组里面,再对这个新数组使用冒泡排序法,组成一个从小到大的排序完成了的数组。第三题是第二次作业最难的题目,新增了一个知识点,Boolean类型的应用,对于是否是闰年的判断,以及多种方法在一个类里面的构造以及在主方法中对于各种次方法的调用。第四题是对于第三题的拓展,主要部分是与第三题无异,只增加了对于下一天的求法,要注意是否是闰年,对于2底的操作,以及对于12月31号下一天对于年与月的改变的操作。第五题也是对于第三题的另一种变形,基础框架没有改变,只是所求的东西改变了,求前n天难度不大。

第三次作业虽然只有三道题目,但是难度却比第一次和第二次难度大了很多。第一题要用到多个类,以及类之间的调用,还有private类型的变量,以及对于变量的无参构造方法,以及含参构造方法,以及私有类型变量的setter以及getter的构造方法,其中setter含参数,getter不含参数,直接return this.参数 。 以及输出时保留两位小数需要用到String.format("%.2f",sum);这种类型的输出。第二题与第二次作业第三题相差不大,第二次作业只需要定义一个类,里面构造许多方法,在一个类里面操作,在一个类里面引用方法,而这题需要构造多个类,不能只构造一个类,需要构造多个类,其中的Date类里面含有许多方法,如无参构造方法和含参构造方法,private类型变量的setter、getter,其中setter含参数,getter不含参数。以及是否是闰年的判断以及求下一天的方法。第三题是第三次作业最难的题目,因为正则表达式是以前从未见过甚至没有听说过的东西,要自己花时间学习才能开始书写这道题目,但是自己学习正则是真的难学,我花了好多天时间也只是学了皮毛,用这个皮毛肯定是完不成第三次作业第三题的,最开始想用if else if 来完成这道题目,但想想局限性太大,而且老师也说不行,更何况if else if 确实很难写的出这道题 ,最后截至时间也没能完成这道题目,正则表达式也只学到了皮毛,而且还是有问题的皮毛。

2:设计与分析

对于第一次作业7-8题,

 

 先是对a,b,c的范围判断,然后对a,b,c关系的判断,再得出相应的结论其中由于是电脑double型不能把直角三角形的判断条件写成a*a=b*b+c*c;因为由于是double型变量,相等不了,只能取相减的绝对值小于一个小数来判断。

对于第二次作业7-8

 

 要注意day是否小于a【month-1】或者b【month-1】,再判断是否是闰年,是二月还是12月这种特殊情况的判断也必不可少。

对于第二次作业7-5

 

 

 

 

 

 先判断是否是闰年,然后在对于年与月与-n的判断,然后再输出对与判断后得到的结果。

对于第三次作业第三题,先判断所输入的符号是否符合条件,然后再对于各种符号的结合构成一个式子,再输出它运算后的最简式。

改进建议:

对于System.out.println(String.format("%.2f",sum));可以改成System.out.print("%.2f",sum);可以把大量的if else if 改成 switch 提升代码的质量,使其不成为垃圾代码。对于代码中对于数据大小的排列,可以把冒泡排顺序方法改成选择排序的方法。可以将a【month】改成a【month-1】; 对于原数组可以在最前面加一个零。

 

总结:

对于这三次作业的学习与完成,我确实了解了java的一些模式,从类,到方法,到输入,输出,其中的一些方法,java对于链表的包装,以及对于正则表达式的初了解,对于类的调用,对于不含参数的构造方法和含参数的构造方法,以及对于类中私有变量private所定义变量的setter以及getter的构造,其中setter含参数而getter不含参数。对于正则表达式还有许多不懂的不明白的地方,还有待研究考察学习深造。对课程方面我觉得多一些“干货”对于一些教导性的道理可以适当减少一些,有时候听这些道理真会听到睡着。毕竟不是一次两次,一节课两节课这样了,感觉这样的次数挺多的,可以适当的讲讲。对于作业的话,其实有些东西可以提早一些公布或者直接发学习网站给我们,像正则表达式的学习,可以在第二次作业做了一半时间的时候就把学习网站发出来,越早发越好,正则感觉还只是学到了一点点皮毛,还是有许多错误的皮毛。与之相同的实验也可以提早一些时间发出来,在学习通上布置的话可以在群里发个消息提醒一下。以上,就是这次的博客了

 

posted @ 2021-04-04 21:08  洞悉  阅读(84)  评论(0)    收藏  举报