第一次blog作业
第一次题目集1~3总结
一、前言
(一)知识收获
在完成这三次题目集的过程中,我收获了许多宝贵的知识和技能。这些题目集不仅涵盖了基础的编程知识,还涉及了一些较为复杂的概念和技术。通过这些练习,我深入学习了正则表达式、类型转换、字符串处理、链表以及像ArrayList等集合类的使用方法。这些知识极大地丰富了我的编程工具箱,让我在处理各种复杂的数据结构和字符串操作时更加得心应手。
此外,我还熟悉了类与对象的设计思想。面向对象编程(OOP)是现代编程中非常重要的一种范式,它通过将数据和行为封装在类中,使得代码更加模块化、易于维护和扩展。通过这些题目集的练习,我学会了如何设计合理的类结构,如何使用构造方法初始化对象,如何通过方法实现对象的行为,以及如何通过继承和多态等特性实现代码的复用和扩展。
(二)题量与难度
每次题目集的题量大致相当,通常包含5到7道题目。这些题目的设计非常合理,难度逐题递增,尤其是每次题目集的最后一题,难度相对较大,并且呈现出迭代升级的性质。这种设计让我在学习过程中逐步提升,也让我意识到编程能力的提升是一个循序渐进的过程。
有些题目具有很强的针对性,例如对数据的处理、时间类的运用等。这些题目能够有针对性地训练到某个方面的知识,让我在学习过程中更加系统地掌握相关技能。例如,第二次题目集中的“求圆的面积”题目,考查了类的构造方法、成员变量的封装以及数学函数的使用;第三次题目集中的“日期类的基本使用”题目,则考查了对Java时间包(如LocalDate)的使用,让我熟悉了日期的处理方法,包括获取年、月、日,以及日期的加减运算、比较和格式化等操作。
二、设计与分析
(一)第一次题目集
- 题目概述
第一次题目集主要围绕类与对象的基本概念展开,考查了类的设计、构造方法的使用、成员变量的封装以及基本的字符串处理。这些题目为后续学习奠定了基础,帮助我熟悉了Java的基本语法和面向对象编程的核心思想。 - 最后一题:答题判题程序-1
题目要求
设计一个答题判题程序,用于处理学生的答题数据,并根据标准答案判断学生的答题情况。程序需要解析输入的答题数据,提取学生的答题信息和标准答案,然后逐题对比学生的答案和标准答案,计算出每个学生的得分。
设计思路
这道题目的核心在于数据的解析和处理。输入数据通常以字符串形式给出,包含学生的答题信息和标准答案。为了正确处理这些数据,我首先需要将输入的字符串分割成多个部分,提取出有用的信息。然后,通过逐题对比学生的答案和标准答案,计算出每个学生的得分。
在设计过程中,我定义了一个Student类来存储学生的基本信息(如学号、姓名)和答题情况(如每题的答案)。同时,我还定义了一个Question类来存储题目的信息(如题号、标准答案)。通过这些类,我可以方便地管理和操作答题数据。
解题难点
数据解析:输入数据的格式较为复杂,需要正确分割字符串并提取出学生的答题信息和标准答案。这一步需要对字符串处理方法有深入的理解,例如使用split方法分割字符串,以及如何通过索引访问分割后的各个部分。
数据类型转换:在处理数据时,可能需要将字符串类型的数据转换为其他类型(如整数或浮点数)。这一步需要掌握类型转换的方法,并注意处理可能出现的异常情况。
逻辑实现:判题逻辑需要清晰明确,确保能够正确对比学生的答案和标准答案,并计算出得分。这一步需要仔细设计算法,避免逻辑错误。
学习心得
通过这道题目,我深刻体会到了字符串处理的重要性。在编程中,字符串是常见的数据类型,掌握其处理方法(如分割、拼接、查找等)对于解决实际问题至关重要。同时,我也学会了如何在处理数据时注意细节,避免因疏忽导致错误。此外,这道题目还让我意识到,良好的逻辑思维能力对于编程非常重要,只有清晰地设计好算法,才能高效地解决问题。
(二)第二次题目集 - 题目概述
第二次题目集在第一次的基础上增加了难度,考查了类的继承、方法的重写、接口的实现以及数据的排序等知识。这些题目不仅要求我掌握基本的类与对象的设计,还要求我能够灵活运用这些知识解决实际问题。 - 最后一题:答题判题程序-2
题目要求
这道题目是第一次答题判题程序的升级版本,不仅要求处理学生的答题数据,还增加了对答题时间的限制。程序需要根据学生的答题时间和答题正确率综合评分,并输出每个学生的最终得分。
设计思路
这道题目的核心在于综合考虑答题正确率和答题时间两个因素进行评分。首先,我需要解析输入的答题数据,提取出学生的答题信息、答题时间和标准答案。然后,通过逐题对比学生的答案和标准答案,计算出答题正确率。接着,结合答题时间,根据题目给定的评分规则计算出每个学生的最终得分。
在设计过程中,我在原有的Student类和Question类的基础上,增加了对答题时间的记录。同时,我还定义了一个Score类来存储学生的得分信息,包括答题正确率、答题时间和最终得分。通过这些类,我可以方便地管理和操作学生的答题数据。
解题难点
多因素评分规则:题目要求根据答题正确率和答题时间综合评分,评分规则较为复杂。这一步需要仔细设计评分算法,确保能够正确计算出每个学生的最终得分。
数据结构选择:为了方便处理学生的答题信息和答题时间,需要选择合适的数据结构。例如,可以使用ArrayList存储学生的答题信息,使用HashMap存储学生的答题时间和得分。
逻辑实现:综合评分逻辑需要清晰明确,确保能够正确结合答题正确率和答题时间进行评分。这一步需要仔细设计算法,避免逻辑错误。
学习心得
通过这道题目,我进一步加深了对类的继承、方法的重写和接口的实现的理解。在编程中,继承和接口是实现代码复用和扩展的重要手段,掌握这些知识可以大大提高代码的可维护性和可扩展性。同时,我也学会了如何设计复杂的算法,综合考虑多个因素进行评分。这道题目还让我意识到,编程不仅仅是实现功能,还需要考虑代码的健壮性和可扩展性。例如,在设计评分算法时,我预留了接口,方便后续根据需要调整评分规则。
(三)第三次题目集 - 题目概述
第三次题目集是这三次题目集中难度最大的一次,考查了类的封装、数据的排序、集合类的使用以及多层循环的嵌套等知识。这些题目不仅要求我掌握基本的编程技能,还要求我能够灵活运用这些技能解决复杂的实际问题。 - 最后一题:答题判题程序-3
题目要求
这道题目是答题判题程序的最终版本,进一步增加了题目的复杂性。程序需要处理多份试卷的答题数据,每份试卷包含多个题目的答题信息。同时,程序还需要根据学生的答题情况生成详细的答题报告,包括每个题目的得分、总得分、答题时间等信息。
设计思路
这道题目的核心在于处理多份试卷的答题数据,并生成详细的答题报告。首先,我需要解析输入的答题数据,提取出每份试卷的答题信息、答题时间和标准答案。然后,通过逐题对比学生的答案和标准答案,计算出每个题目的得分。接着,根据答题时间和答题正确率综合评分,计算出每个学生的总得分。最后,生成详细的答题报告,展示每个学生的答题情况。
在设计过程中,我定义了一个Test类来存储试卷的信息,包括试卷编号、题目列表和得分列表。同时,我还定义了一个Report类来存储答题报告的信息,包括每个学生的答题情况和总得分。通过这些类,我可以方便地管理和操作答题数据。
解题难点
多层数据解析:输入数据的格式非常复杂,包含多份试卷的答题信息,每份试卷又包含多个题目的答题信息。这一步需要正确解析出每份试卷的答题信息、答题时间和标准答案,并将它们存储在合适的数据结构中。
综合评分规则:题目要求根据答题正确率、答题时间和试卷难度综合评分,评分规则更加复杂。这一步需要仔细设计评分算法,确保能够正确计算出每个学生的最终得分。
答题报告生成:题目要求生成详细的答题报告,展示每个学生的答题情况。这一步需要设计合适的输出格式,确保答题报告清晰易读。
数据结构选择:为了方便处理多份试卷的答题数据,需要选择合适的数据结构。例如,可以使用ArrayList存储试卷信息,使用HashMap存储学生的答题时间和得分。
学习心得
通过这道题目,我深刻体会到了编程的复杂性和挑战性。在处理多层数据时,需要仔细设计数据结构,确保能够高效地存储和处理数据。同时,我也学会了如何设计复杂的评分算法,综合考虑多个因素进行评分。这道题目还让我意识到,编程不仅仅是实现功能,还需要考虑用户体验。例如,在生成答题报告时,我设计了清晰的输出格式,方便用户查看每个学生的答题情况。
三、踩坑心得
(一)数据解析的重要性
在第一次答题判题程序中,由于对数据解析的不熟悉,我花费了大量时间处理输入数据。这让我意识到,数据解析是编程中非常重要的一环,只有正确解析出输入数据,才能为后续的处理提供基础。因此,在后续的学习中,我更加注重字符串处理方法的学习和应用,掌握了多种字符串分割、拼接和查找的方法。
(二)逐步测试的重要性
在第三次答题判题程序中,由于题目复杂,直接编写完整的代码后出现了很多错误,修改起来非常困难。这让我意识到,逐步测试的重要性。在处理复杂问题时,应该将问题分解为多个小部分,每完成一部分就进行测试,确保这部分代码的正确性。这样可以避免在最后出现大量错误,难以定位和修改。
(三)代码的健壮性和可扩展性
在第二次答题判题程序中,由于评分规则较为复杂,我在设计评分算法时预留了接口,方便后续根据需要调整评分规则。这让我意识到,代码的健壮性和可扩展性非常重要。在设计程序时,应该预留接口,方便后续扩展功能。同时,也应该考虑代码的健壮性,避免因输入数据的异常导致程序崩溃。
四、总结
通过这三次题目集的学习,我在编程能力上有了显著提升。我不仅掌握了正则表达式、类型转换、字符串处理、链表以及像ArrayList等集合类的使用方法,还对类与对象的设计思想有了更深入的理解。这些知识让我在处理复杂数据结构和字符串操作时更加得心应手,也让我在设计程序时更加注重代码的可读性和可维护性。
在学习过程中,我遇到了很多困难,但通过逐步分析和解决问题,我积累了丰富的经验。我深刻体会到了数据解析的重要性,学会了如何逐步测试代码,确保每一步的正确性。同时,我也意识到代码的健壮性和可扩展性的重要性,学会了在设计程序时预留接口,方便后续扩展功能。
这次学习过程中,我最大的问题是第一次答题判题程序中,由于不会处理数据输入,导致放弃了这个题目。在后续的题目集中,这个问题仍然存在,说明我需要更加注重基础知识的学习和应用。在后续的学习中,我将继续加强正则表达式的使用,提高对字符串处理和数据解析的能力。同时,我也会注重与同学交流学习,通过讨论和合作解决遇到的问题,提升自己的编程能力。
总之,这三次题目集的学习让我受益匪浅。我不仅提升了自己的编程技能,还培养了解决问题的能力和逻辑思维能力。我相信,通过不断学习和实践,我能够在编程领域取得更大的进步。

浙公网安备 33010602011771号