面向对象初调用:foolish 电梯

本周我们完成的任务是傻瓜电梯的调度,对于那十分十分详细的指导书,我感觉想要说明白题目要求,是做不到的,所以就把指导书贴出来给大家看了,,由于在下还不会网页制作,只能通过百度网盘了,https://pan.baidu.com/s/12KLXnQa9ifh1hZQrvqhjAw/pdf争取下次用网页吧,虽然不知道什么时候才能学会。

看完题目我们开始分析吧,

从最直接的角度分析就是请求与调度的关系,直接点就是,发出请求,然后处理请求,将所有合法请求过程构成请求队列,调度器处理一个请求就是根据当前电梯状态发出一条指令,然后电梯运行该条指令,然后更新电梯的状态,然后返回状态只调度器,直到执行完最后一条指令。所以按照思想构造出五个类,但这次作业,在下并没有完全按照要求写,虽然是五个类,但是五个类的作用并不是完全按给出的建议。首先说一下几个类的功能:

  1. 输入我们使用主类,虽然输入是来自电梯类与楼层类,但是作为两处输入太过于麻烦,所以我们使用主类输入
  2. W_legal类,该类作为对于输入的第一层判断,也就是简单的过滤一些不合法输入
  3. Demand类,该类也是作为对于输入的判断,将所有不合法的输入过滤,得到是正确的请求队列
  4. Scheduler类,该类就调度器类,在该类中判断是否是同质请求,同时时间与队列是该类的关键的两个属性,时间用于判断当前类的请求时间与当前时间的大小,请求队列用于判断是否执行结束
  5. Elevator类,该类就是电梯类,接收来自调度器的指令,然后执行该指令,该类中的方法change()意思就是执行指令,然后改变电梯的运行状态,然后返回状态给调度类

对于该想法,本来我也觉得天衣无缝,只可惜还是有漏网之鱼,先列出自己的bug吧:

  1. 对于输入,我依旧采用了第一次作业方法,对输入使用find(),错误……,导致只要存在符合条件的输入就会执行,而忽略了必须是完全匹配的条件
  2. 对于数字的判断,题目的要求是4字节的整数,由于在java中是不存在unsigned类型的数据类型的,也就意味着,我们的数字最大位2^32-1,而不是2^31-1,所有数据类型要是long类型,我都是这么写的,但是还是错了,那么错误在哪里呢?本来在使用下面的这个方法时要注意一点时,一定要是有try catch,除非你事先确定了数据的位数
  3. max = Long.parseLong("4294967295");

     

对于自己想法的优化:

  1. 最需要优化的地方当然是输入,所以第三次作业在下重写写了一个输入,具体见第三次作业,
  2. 如果还有什么要优化的话那就是代码风格吧

为了纪念自己第一次使用面向对象的方法来实现这个作业,容我贴一点核心代码

request_new.request_old = legal_1.num;request_new.deal();  //得到一个队列,队列中是按时间顺序的请求都是合法请求sche.request_n = request_new.request1;sche.fetch();while(sche.request_n[sche.i][0]!=0) {sche.state_c = elev.state;sche.stop_time = elev.st_time;sche.deal_t();elev.move = sche.instr_o;elev.change();sche.i++;}    

 

转载于:https://www.cnblogs.com/wevolf/p/8682577.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/570994.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Studio 3T更改使用时间破解免费使用方式(转,可以使用)

echo off ECHO 重置Studio 3T的使用日期...... FOR /f "tokens1,2,* " %%i IN (reg query "HKEY_CURRENT_USER\Software\JavaSoft\Prefs\3t\mongochef\enterprise" ^| find /V "installation" ^| find /V "HKEY") DO ECHO yes | reg a…

Maven学习之(一)基本配置

安装maven还几次没成功,不过最后还是查资料成功了,所以记录一下。 1.安装JDK,比较简单,就不说明了。 2.配置java的环境变量 JAVA_HOME (最开始因为java配置成C:\Program Files (x86)\Java\jdk1.8.0_144\bin 所以出问题…

Rabbitmq java.util.concurrent.TimeoutException小问题解决

最近在研究rabbitmq的各个工作模式时。 出现了一个rabbitmq java.util.concurrent.TimeoutException异常 java.util.concurrent.TimeoutExceptionat com.rabbitmq.utility.BlockingCell.get(BlockingCell.java:77)at com.rabbitmq.utility.BlockingCell.uninterruptibleGet(B…

个人服务器

1、用yum install 安装太方便了,不用考虑依赖 yum install java yum install mysql yum install tomcat 一下子就搞定了。 安装好mysql好像并不能启动,还要yum install mariadb-server -y 具体看:https://blog.csdn.net/lixingdefeng…

org.hibernate.QueryTimeoutException: Could not execute JDBC batch update问题解决(转)

这个bug的原因就是 在插入数据操作时 插入字段的长度 超出了数据库表设计时的该字段长度 导致的这个异常 解决办法: 1.减短字段长度 2.增加字段长度限制 例:alter table table_name modify column_name varchar(50); 转:https://blo…

Neither BindingResult nor plain target object for bean name 'xxx' availabl问题解决

明明已经按网上进行处理了为什么还是这个异常呢&#xff1f; 解决方法&#xff1a; 1.<form:form modelAttribute"user" 标签内绑定页面传来的数据。 2.在页面上加上 <jsp:useBean id"command" class"com.mvc.domain.BlogForm" scope&q…

JS中Date.parse()和Date.UTC()返回值不一致

Date.parse() 方法解析一个表示某个日期的字符串&#xff0c;并返回从1970-1-1 00:00:00 UTC 到该日期对象&#xff08;该日期对象的UTC时间&#xff09;的毫秒数&#xff0c;如果该字符串无法识别&#xff0c;或者一些情况下&#xff0c;包含了不合法的日期数值&#xff08;如…

浅学习使用Ribbon 和 Feign的理解和使用

Ribbon是Netflix公司开源的一个负载均衡的项目,是一个基于 HTTP、TCP的客户端负载均衡器. 什么是负载均衡? 负载均衡是微服务架构中必须使用的技术&#xff0c;通过负载均衡来实现系统的高可用、集群扩容等功能。负载均衡可通过 硬件设备及软件来实现&#xff0c;硬件比如&am…

OSI七层协议模型

OSI七层协议模型 1. OSI七层和TCP/IP四层的关系 OSI引入了服务、接口、协议、分层的概念&#xff0c;TCP/IP借鉴了OSI的这些概念建立TCP/IP模型。OSI先有模型&#xff0c;后有协议&#xff0c;先有标准&#xff0c;后进行实践&#xff1b;而TCP/IP则相反&#xff0c;先有协议和…

Centos启动卡住,starting auditd: [failed]

具体原因可能是什么权限导致的吧 &#xff0c;母鸡啊 解决方式&#xff1a; 在重启客户端时输入 i 然后输入 a &#xff0c;在<_root KEYBOARDTYPEpc KEYTABLEus rd_NO_DM后空格输入 single再 enter就进入了

FPGA中计数器设计探索

FPGA中计数器设计探索&#xff0c;以计数器为32位为例&#xff1a; 第一种方式&#xff0c;直接定义32位计数器。 reg [31:0]count; quartus ii 下的编译&#xff0c;资源消耗情况。 85C模型下的时钟频率。 0C模型下的时钟频率。 chip planner下资源分布情况。 第二种方式&…

存储过程存储函数得简记(转)

oracle中的存储过程和存储函数的区别&#xff08;尊重劳动成果&#xff0c;转载请注明出处&#xff1a;https://blog.csdn.net/qq_39778516/article/details/84033710 consistencely的博客&#xff09; 1.存储过程 存储过程&#xff08;Stored Procedure&#xff09;是在大型数…

MongoDB服务无法注册

按此步骤执行出现无法注册服务名问题时&#xff0c;如下解决&#xff1a; 方法一&#xff1a; 方法二&#xff1a; 如果还是无法解决的话&#xff0c;首先卸载MongoDB&#xff0c;然后清MongoDB注册表&#xff0c;重新安装&#xff0c;然后按一开始那样执行mongo.conf文件&am…

006 list类型

一.概述 在redis之中,我们需要把list视为一个链表,存储的元素我们需要视为一个字符串(可以是序列化的字符串). list的核心就是 : 有序的字符串列表. 二 .基本操作 [1]lpush , rpush 从左方向和右方向追加元素 [2] 查询指定范围的数据 --- lrange index last_indezx [3] 获取指…

WIN10注册表出现“无法删除所有指定的值”解决办法

win --> cmd 右键以管理员运行 --> regedit 进入注册表 --> 找到你要删除的值的所属文件夹 --> 右键权限 -->修改为完全控制

SpringBoot学习笔记(8):事物处理

SpringBoot学习笔记&#xff08;8&#xff09;&#xff1a;事物处理 快速入门 在传统的JDBC事务代码开发过程中&#xff0c;业务代码只有一部分&#xff0c;大部分都是与JDBC有关的功能代码&#xff0c;比如数据库的获取与关闭以及事务的提交与回滚、大量的try..catch..finally…

Nignx出现failed (3: The system cannot find the path specified)问题

一般这个问题都是都是nginx.conf配置出现问题导致的。 仔细检查location配置等信息&#xff0c;核对error.log中显示路径是否产生跳转&#xff0c;核对跳转路径是否正确来推断自己配置是否有误。 如果无误的话。 查看window下或linux下的nginx进程是否出现多个进程&#xff…

nignx处理Html中SSI技术代码注意事项

当我们将服务部署至Nignx中时&#xff0c;想要页面静态化后的Html文件使用SSI技术获取包含页面内的js代码时。 需要注意的是&#xff0c;当我们从nignx访问动态地址时&#xff0c;返回的页面结果一定要是html页面才可以支持SSI技术&#xff0c;jsp是不支持SSI的&#xff0c;所…

Mybatis异常Invalid bound statement (not found): com.xxx.xxxMapper.selectxxxByxxx

这个异常问题的解决办法就是首先&#xff0c;检查Mapper文件配置是否有误&#xff0c;返回类型和bean是否对应。如果bean和mapper文件都无问题&#xff0c;可以检查一下Mapper注解的导包问题&#xff0c;导包错误也会导致这个问题

如何计算并测量ABAP及Java代码的环复杂度Cyclomatic complexity

代码的环复杂度(Cyclomatic complexity&#xff0c;有的地方又翻译成圈复杂度)是一种代码复杂度的衡量标准&#xff0c;在1976年由Thomas J. McCabe, Sr. 提出。 在软件测试的概念里&#xff0c;圈复杂度用来衡量一个模块判定结构的复杂程度&#xff0c;数量上表现为独立线性路…