【实例简介】

【实例截图】

【核心代码】

package ele;

import java.util.LinkedList;

import java.util.Queue;

public class ElevatorTest

{

public static void main(String[] args)

{

//初始化

//初始化电梯

Elevator[] elevator=Simulation.initElevator();

//初始化乘客

Passenger[] passenger=Simulation.initPassenger();

//初始化楼层

Floor[] floor=Simulation.initFloor();

for(Passenger p:passenger)//将所有乘客插入一楼的闲置队列

floor[0].getIdleQueue().offer(p);

int systemTime=0;//系统时间控制,仿真开始时为0

System.out.println("仿真开始");

System.out.println("-------------------------------------------");

System.out.println("时间:" systemTime "秒");

for(Elevator e:elevator)//电梯初始状态

System.out.println("电梯" e.getId() "在第" e.getCurrentFloor() "层.方向为" e.getFlag() ".状态为" e.getStatus() ".梯内有" e.getCarryQueue().size() "个乘客" e.getCarryQueue());

System.out.println("-------------------------------------------");

while(Simulation.isFinished(passenger)==false)//主循环,还有人没有完成乘梯活动

{

for(Floor f:floor)//将每个楼层中,请求时间到达的乘客从闲置队列移到请求队列

{

if(f.getIdleQueue().size()==0)//该层没有乘客,退出本次循环

continue;

Queue delList = new LinkedList();//辅助队列

for(Passenger p:f.getIdleQueue())

{

if(p.getNextRequestTime()==systemTime)//系统时间与p请求时间相同

{

f.getWaitQueue().offer(p);// 将p加入楼层请求队列

delList.offer(p);//将p加入要删除的辅助队列

}

}

f.getIdleQueue().removeAll(delList);//将加入楼层请求队列的p从闲置队列删除

}

System.out.println("时间:" (systemTime 1) "秒");

for(Floor f:floor)//每个楼层

{

if(f.getWaitQueue().size()==0)//楼层没人请求,退出本次循环

continue;

for(Passenger p:f.getWaitQueue())//某一楼层请求队列的所有乘客

{

if(p.getResponse()==false)

{

p.chooseElevator(elevator);//p选择电梯

p.setResponse(true);//设置p响应标志位true

}

}

}

//System.out.println("-------------------------------------------");

//System.out.println("时间:" (systemTime 1) "秒");

for(Elevator e:elevator)//每部电梯改变一次状态

{

e.takeElevator(floor[e.getCurrentFloor()-1],systemTime );//在时间为systemTime,楼层为currentFloor时,处理乘客上下电梯事件

System.out.println("电梯" e.getId() "在第" e.getCurrentFloor() "层.方向为" e.getFlag() ".状态为" e.getStatus() ".梯内有" e.getCarryQueue().size() "个乘客" e.getCarryQueue());

e.continueRun();//继续运行一秒

}

//打印楼层信息

for(Floor f:floor)

if(f.getWaitQueue().size()>0)

System.out.println("楼层" f.getId() "有" f.getWaitQueue().size() "个乘客在等待乘梯." f.getWaitQueue());

System.out.println("------------------------------------------");

systemTime ;//系统时间加1

}

//System.out.println("-------------------------------------------");

System.out.println("本次仿真所用时间:" systemTime "秒");

System.out.println("-------------------------------------------");

for(Passenger p:passenger)//统计乘客等待时间

System.out.println("乘客p" p.getId() "的等待时间为:" p.getWaitTime() "秒");

System.out.println("-------------------------------------------");

for(Elevator e:elevator)//统计电梯闲置及运行时间

System.out.println("电梯" e.getId() "的闲置时间为:" e.getIdleTime() "秒.运行时间为:" e.getRunTime() "秒");

}

}

java如何写电梯代码_JAVA编写的一个简易的电梯模型,完成电梯如何满足乘客上下楼需求(ElevatorTest)...相关推荐

  1. java关于继承的代码_java编写动物世界的继承关系代码

    满意答案 bjtm0210 推荐于 2017.12.16 采纳率:57%    等级:8 已帮助:611人 我写了一个,内容比较简单的.代码如下:public class AnimalTest { A ...

  2. java记事本写玫瑰花代码_Java记事本源代码(完整)

    <Java记事本源代码(完整)>由会员分享,可在线阅读,更多相关<Java记事本源代码(完整)(13页珍藏版)>请在人人文库网上搜索. 1.* 作品:记事本* 作者:* 功能: ...

  3. 在java中写出html代码,在java里写html代码

    在java里写html代码 [2021-02-09 07:31:38]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace("/ ...

  4. 学java用什么写比较好_学习Java需要什么基础,初学Java如何写好代码

    原标题:学习Java需要什么基础,初学Java如何写好代码 初学Java的同学时常会遇到这样的情况,跟着入门教程看过一遍,但需要自己写代码的时候却无从下手:写代码的时候时常会遇到不懂的地方,如果停下来 ...

  5. java模拟电梯程序_Java编写的电梯模拟系统《结对作业》

    伙伴成员:李伊 http://home.cnblogs.com/u/Yililove/ 对于这次作业,我刚开始一点思绪都没有,在老师安排了结对伙伴李伊之后,我的搭档问我,我们需要什么编程语言来编写程序 ...

  6. java猜数字游戏代码_Java如何编写猜数字游戏

    在看到这个小游戏的时候,首先想到的是: 1.电脑会随机生成一个数字. 2.我们需要去猜测生成的这个数字,并输入我们猜测的值. 3.电脑生成的随机数需要和我们猜测的值相比较. 4.比较的结果需要体现出来 ...

  7. java如何编写出菱形的代码_java编写菱形代码

    菱形代码 public class Diamond { public static void main(String[] args) { for (int i = 1; i <= 5; i++) ...

  8. java主窗体设计代码_java窗体设计+GUI经典代码全放送

    [实例简介] java窗体设计经典代码,手把手叫你如何设计java窗体,编写应用程序. [实例截图] [核心代码] 57641e3b-d82c-4f28-bb29-35f951c1158d └── j ...

  9. java wed登录面 代码_Java Web登录界面

    非常激动的开通了我的第一个博客,在这里希望大家能多多指点,相互学习. 一个简单的登录界面 首先我们先把这个登录分为三块: 一.数据库 数据库我用的是MYSQL: 二.前端 三.后台 1.  后台代码的 ...

最新文章

  1. 函数返回类的对象与拷贝构造函数
  2. GNU make manual 翻译(五十一)
  3. 【前端】react and redux教程学习实践,浅显易懂的实践学习方法。
  4. Toad Oracle 本地/远程数据库导入/导出 数据库备份
  5. Java学习之for语句
  6. 消息队列如何保证顺序性?
  7. 常用ms-dos命令
  8. LeetCode算法入门- Remove Element -day20
  9. 信息学奥赛一本通C++语言——1035:等差数列末项计算
  10. 浦发银行出现:部件'InstallCertListAx.ocx'或其附件之一不能正确注册:一个文件丢失 解决...
  11. html表单中按钮添加超链接,JS 实现点击按钮实现超链接功能
  12. 大数据可视化有哪些优势
  13. 吞食天地2完全版乱码怎么解决_PDF转Word如何转换?PDF转Word乱码怎么解决?
  14. 【OpenCV】用sobel算子和Susan算子提取恩智浦智能车赛道边缘
  15. 三菱Q系列PLC QJ71C24-R2模块的串口232通信
  16. word自动生成目录和调整页码字体的方法
  17. java源文件基本布局结构_请调试课本 “第117页”5.4.1节 菜单资源 的代码, 并将程序运行的屏幕截图 和 核心源代码的截图(布局文件,菜单资源文件,Java文件,程序结构图等)提交。...
  18. 无源晶振(Crystal)的负载电容
  19. VBlog项目代码理解之前端
  20. 概率练习 (16.04.30)

热门文章

  1. 导电滑环的几种接线方式
  2. 视觉检测应用之电路板二维码读取
  3. 登录psn 服务器无响应,链接psn服务器超时
  4. led58k280j电视刷机
  5. 图像几何变换知识总结
  6. Android流量监控
  7. 一个关于CMNET和CMWAP流量费的解释
  8. Mac按照MATLAB提示“libmwlmgrimpl.dylib”文件已损坏
  9. Win10电脑打开IE会自动跳转到Edge浏览器的完美阻止方法
  10. H3C服务器出厂系统密码,h3c服务器网关口默认密码