blog总结
blog总结
一.前言
第一次作业集:
- 知识点:涉及到 Java 语言的最基本的用法,第一次作业集是我真正意义上接触Java编程的开始。通过第一次练习,巩固了Java工具包的使用,类的定义和使用,如何写类的方法。如何读取一行数据并不读取换行符。将类与类之间做组合关系,在测试类中使用类及其方法。用 private 字段封装类。用static 静态方法将所得数据排序并理解该方法作用于全局,与Math等方法相联系并掌握该知识点。掌握了Java中数组这一基本数据结构的使用方法。
- 题量:第一次作业集包含3个工具类和1个测试类的设计,题量相对较小。
- 难度:简单
第二次作业集:
- 知识点:在第一次作业的基础上使用了list 集合存储数据,学会了List集合的基本操作方法,包括添加、删除、遍历等,学会了 list 的排序用法。随着项目体量的增加,6个工具类和1个测试类的设计让我深刻体会到了一个重要的编程理念:在动手实现具体功能之前,应该先精心设计类之间的结构和关系。在读取文字时学习到了分割字符串的方法。
- 题量:6 个工具类和 1 个测试类,题量适中。
- 难度:适中
第三次作业集:
- 知识点:类与类之间的关系复杂度提高,不仅单个类拥有自己的组合类,还要与其他类建立组合关系,形成了多层次、多维度的类结构。较前两个作业集的计算难度提升,增加了物理力矩的计算和严格检验了输入数据的合法性并单独包装成了包装类,将代码更加模块化和可维护。学习到了如何停止程序的运行。
- 题量:9 个工具类和 1 个测试类
- 难度:较难
二.设计与分析
(1)
1.封装思想:将货物、航班封装成类,属性私有化,通过方法访问;
2. 单一职责原则:
Cargo:只存货物数据;
Flight:处理航班业务、货物增删、选择排序、信息输出;
BubbleSortUtil:只做排序算法;使代码分工清晰,可维护性提升。
(2)
1. Position 位置类:记录货舱内货物存放的行、列坐标,生成位置名称
2. Cargo 货物类:货物名称、重量、目标货舱ID(指定放入哪个货舱)
3. CargoCompartment 货舱类:单个货舱ID、最大载重、位置集合、货物集合;控制单货舱载重,判断是否超载
4. Flight 航班类:管理多个货舱;统计航班全局总载重,管控最大起飞重量、最大业载
5. LoadDispatcher 调度工具类:货物降序排序(重货优先)、按货舱ID匹配目标货舱
6. InputValidator 输入校验工具类:校验整数,浮点数合法性、数值范围
7. Main 主程序类:输入航班、货舱、货物,调度装载,输出装载结果、全局超载警告
8.使用 1e-6 处理浮点数精度问题,规避double计算误差
(3)
单个类拥有自己的组合类,还要与其他类建立组合关系,形成了多层次类结构。通过 InputValidator 工具类统一拦截负数,极大提高了程序健壮性。
1. Position 位置类:货舱内货物行、列坐标
2. Cargo 货物类:货物ID、重量、目标货舱ID(前舱/后舱)
3. CargoCompartment 货舱类:前后2个货舱;独立载重控制,存储装载货物
4. Luggage 行李类:封装旅客行李重量
5. Passenger 旅客类:旅客姓名、行李;计算旅客总重量(固定体重75kg+行李重量)
6. Flight 航班类:管理货舱、旅客;存储所有装载数据
7. LoadDispatcher 调度工具类:冒泡排序,重货优先装载
8. InputValidator 输入校验工具类:拦截负数、越界数据,保证数据合法
9. WeightBalanceCalculator 重心配平计算类:核心业务算法类,独立实现:空机力矩、旅客力矩、货舱力矩、整机重心CG、重心百分比%MAC、安全区间判断
10. Main 主程序类:输入、装载、调用重心计算、输出专业航空舱单、安全评估。


总结:从简单单货舱重量校验到多货舱分层管控到航空重心力矩专业配平,业务复杂度、真实度、代码严谨性逐层提升。
三.踩坑心得
第一次作业集:第一次作业集是我真正意义上接触Java编程的开始。本次作业暴露了我新手编码不规范、工具类思想薄弱的核心问题。本次作业要求将排序逻辑封装为独立静态工具类,实现全局复用,但由于我刚接触Java,完全不理解工具类的设计思想和封装意义。在最初编写代码时,我没有单独创建排序工具类,而是将排序代码直接写在flight类作为方法,这种写法虽然能够实现排序功能、运行结果正确,但代码算是冗余、而且对于程序复用性极差。如果后续需要再次使用排序功能,必须重复编写代码,完全不符合Java模块化、工具化的编程规范。通过本次踩坑我深刻明白,Java编程不只是实现功能能用,更要保证代码规范可复用和可维护。静态工具类的核心作用就是封装通用高频功能,剥离主业务逻辑,实现一次编写、全局调用,这是后续开发复杂程序必须遵守的基础规范。我也和Math等常用方法对比研究,理解了static方法对与程序的必要性。
第二次作业集:本次作业的核心漏洞出现在List集合排序的规则考虑不全面。作业业务要求在数据排序过程中,若两个对象质量数值相同,需要保留原始录入顺序,实现稳定排序。在初次编码时,我仅设置了基础的质量大小排序规则,完全忽略了等值情况下的顺序保留逻辑,导致质量相同的数据会随机打乱原有输入顺序,不符合题目业务要求。本次错误暴露了我的核心短板:编写排序逻辑时思维片面,只关注主要排序条件,忽略了边界条件、特殊情况的处理。同时体现出我对List排序的底层逻辑理解不透彻,只掌握了基础排序用法,没有吃透排序规则的完整适配场景,对业务细节的把控能力严重不足。后续在编程错误我也意识到对与题目的细节处理不当,将程序改进。
第三次作业集:第三次作业难度较高,业务逻辑复杂,我出现了两处关键失误。第一,审题理解偏差,功能放置位置错误:题目要求前舱、后舱剩余容量不足的警告提示,需要在程序输出,用于提醒用户数据异常,但我错误地将警告提示写入了最终输出的舱单中,导致正式舱单数据混入冗余警告信息,破坏了舱单数据的完整性和规范性,不符合业务输出标准。该问题本质是我没有精准区分提示信息和正式结果输出信息的使用场景,对业务需求的细节拆解能力不足。第二,方法返回值处理缺失。在实现物理力矩计算功能时,我成功编写了完整的力矩计算方法,方法本身可以完成精准计算,但调用方法时忽略了接收方法返回值,导致计算出的正确力矩数据没有被存储和调用,后续所有基于力矩的二次计算全部失效,程序出现逻辑错误。该问题暴露了我对Java方法返回值机制理解不扎实,只注重方法内部逻辑实现,忽略了方法调用的核心目的。后续我将需要的数据用数组返回。
四.改进与建议
对于第二次作业集:将每个测试点给出错误方向。
对于第三次作业集:题目分析有误,前舱的范围为1到最大值。
五.总结
(1)掌握的知识
基础语法层面,熟练掌握了类与对象的创建、封装特性、private私有字段、static静态方法、数组遍历操作、控制台数据输入输出、程序终止等核心基础语法,能够完成基础程序运行。
面向对象层面,从简单的单类编程,进阶掌握了多类协作、类与类的组合关联关系,能够根据业务需求拆分工具类、实体类、测试类,理解模块化编程的核心思想,掌握代码解耦、功能复用的基础方法。
集合与数据处理层面,熟练掌握List集合的全套操作、自定义排序、字符串分割解析等实用技能,突破了数组的局限性,能够高效处理数据。
编程思维层面,从最初的边写边想、只求运行,升级为先设计、后编码、重规范的专业编程思维,掌握了数据合法性校验、程序容错处理、结构化设计等基础能力,能够应对复杂的编程作业。
同时,通过多次踩坑复盘,我清晰认知了编程的常见误区,明白了Java编程规范的重要性、不再单纯追求代码跑通,更加注重代码规范性、逻辑完整性。
(2)后续学习与知识点规划
基于当前已掌握的基础内容,为弥补现有知识短板、提升编程综合能力,接下来将学习以下知识点,循序渐进提升自己:
1. 集合体系深度进阶
学习List集合原理,区分ArrayList、LinkedList的结构、查询增删效率;学习Set、Map两大核心集合,掌握HashSet、TreeSet、HashMap、TreeMap的特性与实操用法;学习集合遍历的四种方式、集合嵌套、集合与数组的相互转换,掌握集合自定义排序等的用法,理解Java集合体系。
2. 面向对象核心特性
系统学习封装、继承、 polymorphism三大核心特性,重点掌握继承的父子类关系、方法重写、super关键字使用;掌握多态的实现条件、向上转型、向下转型;学习抽象类、接口的定义与区别,掌握接口多实现、抽象类单继承的规则,理解面向对象设计的核心思想,解决复杂类间关系设计难题。
3. 异常处理机制
系统学习Java异常体系,区分编译时异常、运行时异常;掌握try-catch-finally异常捕获、throws、throw异常抛出用法;学会自定义业务异常,完善程序容错机制,解决程序报错崩溃问题,提升程序稳定性。
4. 字符串与常用工具类的进阶学习
深度学习String、StringBuilder、StringBuffer的区别与适用场景;精通字符串正则匹配、替换、截取、分割、校验等高级操作;学习Math数学工具类、Date时间类、随机数工具类等常用JDK工具,适配复杂数据计算与格式处理需求。
5. 实操数组与集合算法
结合现有排序基础,学习冒泡排序、选择排序、插入排序、二分查找等基础算法;针对List集合实现复杂多条件排序、分组、筛选,提升数据处理能力。
6. IO文件流基础
学习Java文件读写核心知识点,掌握文件创建、删除、遍历;掌握字符流、字节流的使用,实现文本数据、批量数据的文件读写、存储、导出功能,完善文件操作能力。
7. 代码设计思维提升
学习基础的代码分层思想;练习复杂业务需求拆解、类结构设计、方法封装,逐步具备小型项目的架构设计思维。
(3)改进意见
- 对于作业集新运用的知识可以在发布前提前再讲解一遍,有助于学生进一步理解作业,学习并运用新知识。
- 对于实验可以把要求的输入输出编写详细,并把是否需要测试额外要求的方法等学生常见问题写入指导书中。
- 对于作业,有些时候一周会发布3-4个作业,时间不太合理。


浙公网安备 33010602011771号