三次电梯问题小结

一.前言

经历了不到一个月的学习,学了对象和类,继承,抽象类,单一职责原则和一些基本语法,但是面对电梯问题还是感到非常棘手,三次电梯问题没有一次能完美通过,总是有或多或少的问题,即便是请教了老师和同学,自己再动手时还是错误频出。对正则表达式,ArrayList 和 LinkedList都不甚了解,在做题后也是随做随学,错误百出

二.代码设计分析

1.第一次电梯问题

题面如下:

类设计如下:

结果如下:

踩坑心得:

  • 第一次写大作业由于之前拉下太多,导致很多题目要求看得并不是太懂,尤其是尖括号数据无法读取
  • 使用for循环与if语句读取尖括号数据只能读取特殊情况,其他情况均无法正确处理
  • end不区分大小写必须用compareto而不能用百分百匹配的equal方法
  • 尖括号数据用正则表达式分组提取后,一次性只能输入一个数据,要用while循环输入
  • 正则表达式提取数据,如果数据类型不是一个,要在while中再次调用find方法
  • main方法复杂度过高,且没有遵守单一职责原则,导致错误信息无法排除,找错难度过高

2.第二电梯问题

题面如下:

类设计如下:

结果如下:

踩坑心得:

  • Integer与枚举Direction实际上都是对象,对于它们的调用不能参照变量,需要包装
  • Listlink是链表,不能使用for加下标方法获取,而AraayList与list是线性表,可以用下标读取,但要用get方法才能读取
  • 用for循环加if无法过滤多余数据,导致报错
  • 对电梯算法不熟悉,在外部请求与内部请求重合时会开两次门

第三次电梯问题:

题面如下:

类设计如下:

结果如下:

踩坑心得:

  • 控制类嵌套太深,getNextFloor()与getDirection()方法反复互相调用,用时过长
  • 内部队列和外部队列无法判断谁先谁后,总是要在内部队列全部弹出后才能加入第二个外部队列
  • 电梯算法中的多线程问题无法处理,当同时存在一上一下距离相同的需求时会出现每一层都停留的情况
  • 无法准确获取当前楼层的方向,在到达顶楼或者是底层时会出现越界后才能获取方向

三.总结

  • 基础薄弱:对正则表达式,队列等概念理解模糊,无法独立写简单逻辑。
  • 缺乏实践:学完理论后很少写代码,一动手就卡壳,依赖复制粘贴。
  • 对于多线程问题接触太少,无法有效判断该进行哪一个线程
  • 单一职责原则理解不够,在反复嵌套中加深了调错难度和运行时间
  • 队列算法学得很差,不能将队列弹出和加入
  • Arraylist和list也不会运用,对于用list线性表对数据的存储和输出不能实现

四.改进

  • 编程是技能型学科,需大量练习才能熟练
  • 先实现功能,再优化代码
  • 找到内在动力,用编程解决实际问题
  • 制定每日计划
  • 学会调试和查错,遇到错误先自己分析
posted @ 2025-04-20 11:09  严远钊  阅读(16)  评论(0)    收藏  举报