1234gjz

导航

 

第一次大作业


前言

第一次java大作业,对代码和知识点做一个系统的分析,可能有很多不足,以后会有所改进。

第一次作业

知识点

java的基本语法,字符,循环结构,选择结构,数组,类型转换

题量

共12道题目,题量较大,但大部分较为简单,主要测试基本语法掌握。

难度

第10题难度大,其他难度不大,总体难度一般。

 

第二次作业:

 

知识点

 

java的基本语法,字符,循环结构,选择结构,顺序结构,数组,类型转换,字符串。

 

题量

 

共9道题目,题量较大,难度比第一次大,涉及知识点较多。

 

难度

 

最后两题难度较为大,其他难度不大,细节较多。

第三次作业:

知识点

java的基本语法,数组,字符串,选择结构,新建类的构造使用。

题量

共4道题目,题量很少,但总体难度大,尤其是后两题.

难度

难度比前两次要大多,最后两题难度很大,并且对类和语法的考查很多,需要课外的格外学习,考查的知识点很多。

设计与分析:

 

op训练集01

7-6统计一个子串在整串中出现的次数

在做这个题目时,要统计同一个字符串中重复出现字符的次数,需要读取字符串中前面的字符,因此学习了字符串的一些语法应用,比如indexOf(),index 位置开始查找指定字符在字符串中第一次出现处的起始索引,并依次查询,直到字符串长度结束来查找整个字符串。

7-12 列出最简真分数序列

 

这个题目要算最简的分数,要考虑到有些特殊情况的比如5/10这种数字不能输出的情况,先把分子为1和2单独拿出来考虑判断是否最简,剩下的再用分子和分母同时从2除到等于分子的数,当存在分子分母除以一个数的余数同时为0时,这个分数就不是最简分数,从而不进行输出。通过这个方法再依次输出所有最简分数。

 

 

 op训练集02

7-5学号识别

本题通过输入一串学生的学号来判断输出学生的各种信息,主要方法还是字符串的使用,在做这题时,刚开始不理解该用什么语法来实现,在学习了substring的用法后,这题就很明确了,通过substring来将学号字符串中的各个部分分别赋值给其他信息,进而再通过各个信息独自的判断方法来确定出学生的入学年份,学院,班级,学号等信息。最后通过各个独立信息将学生信息输出。

 

 

 

 

 

 

 

7-9 求下一天

这题通过输入一个范围内的年月日,来输出该日的下一天的年份,首先要先判断该年月日是否合法,然后因为要考虑年和月的最后一天以及闰年导致2月份天数不同,所以考虑的方面很多,所以过程较多,这里选择将大小月分开考虑,并将2月单独考虑,每月的最后一天单独考虑,以及每年的最后一天。

 

 

 

 op训练集03

7-3 定义日期类

本题主要实现Date类的各个功能,包含多个方法,定义,通过在主函数中新建Date类,再调用Date类中的方法来实现功能,主要注意的是boolean用法return true/false,其他就是主要判断闰年和月份和7-9的算法差不多。

     

 

 

 

7-4 日期类设计


这题比上题要复杂很多,确也包含着上题的一部分,上题是下一天,这题是下n天前n天和两天之差,可以当成三个独立的部分来做。就是三个不同的功能,一个一个来实现,再考虑年份下n天时,由于不知道确切是几天,所以要对这个天数和年的关系做一个考虑,并且还要做连续年间是否哪年是闰年的考虑,很为复杂,所以我对下n天的功能写的有点麻烦,个人觉得不是很好的方法,代码太长了,有待改进。

 

 

 

 

 踩坑心得

第一次实验

7-3

第一次在输出的时候给i和j的主次搞反了,分别代表行和列的数字,搞反了确实不细心,值得借鉴。

 

将输出里面的i和j互换就解决了问题

 

 

 

 

 

 第二次实验

7-6

第一次用的是double输入值,题目中给的输出例子是7为小数,当时觉得double,float都行,没有特别去考虑这个小数位,结果计算部分错误。

 

 

 

 再进行了调整之后,将double变成float,然后功能就正确了,所以在保留小数较少时尽量用float来进行。

 

 

 

 

 

7-9

第一次代码的这块部分没有满足year,month和day的同时合法,当时考虑太片面了而且在做的时候晕乎了,这样根本满足不了合法输入正确,所以1再提交之后检查一下就发现了错误。并且第二张再没有排除的情况下写了两个if(.....)的,没有用else if,也是一点小错误。

 

 

 

 

 

 调整之后,就没有什么问题了,将或(||)全部改成&&,就可以保证三个输入全部合法判断。

 

 

 

 

 

 改进建议

1.首先在第一次实验时,刚开始对于语法和格式这些都不熟悉,都是慢慢的尝试,编译次数也就特别多,当然这也是进步的过程,在后面就有些了解了之后,也是开始慢慢的了解更多的格式和语法,还有对于某些命名比较偏中文,这也是不正规的,虽然有所改进,但以后要更加注意。

2.不打注释,在上学期学习c语言是就不打注释,但是java难度比c要大,代码更加多样复杂,所以要合理的标注和解释,才能更加方便直观,不光是给别人看,也更能让自己清晰明确自己做的是什么,在写代码时,更方便前后查找。

3.总是各种小问题,自己写的时候完全注意不到,尤其是中英文符号的写错,这个一般没有编译器的报错很难发现,所以要更加注意,而且有时候算法总是又长又慢又麻烦,自己的想法不是很好,应该多和别人交流讨论,当然不是抄袭别人,和别人交换方法,掌握一下更多的算法和方法,这提升的效率才是最快的。

4.而且练习的少,并没有再去格外的做其他的代码和题目,知识点掌握也不行,抓紧时间去学更多的语法和知识点,最主要还是要锻炼纯写代码能力,不依靠任何外物,全靠自己。

总结

1.学到了什么:实验就是做题,做题学会了类似题的思路和语法知识,掌握了方法,每次遇到新的不会的题就是很好的学习机会,借此去学习此知识点,收获每次都不小,但实际下来好像自己还是不会很多,这也更加促使自己要去学更多,去期待下次的学习和掌握什么。

2.需要进一步研究学习:不管是自己在做题时零零散散学的东西,都是有点拼拼凑凑的,总是感觉只有这一点点内容,而且对于一个方面只能掌握仅仅只有此题的范围,很零散,所以应该去系统的学习,听网课,看书等等,去一下在一个知识点语法方面掌握全面一些,这样系统的规划才是学习的最有效办法。

3.改进建议:课程教学方式感觉没问题,主要还是得看个人的学习。

 

 
posted on 2023-03-26 23:20  asd233  阅读(32)  评论(0)    收藏  举报