Java模拟客户银行取款案例

首先我们来看一下这个题的题目:

  • 某银行有4个柜台,假设某天有若干位客户来办理业务,每个客户到达银行的时间和取款需要的 时间分别用两个数组arrvie_time(已经按到达时间排序)和process_time来描述。假设每个客户在取款之前先拿号排队,然后在任意一个 柜台有空闲的时候,号码数最小的客户上去办理,假设所有的客户拿到号码之后都不会失去耐心走掉 , 请写程序计算所有客户的平均等待时间。

  • 要求实现:输入 arriveTime[1,2,3,4,4,8] , processTime[50, 20, 11, 25, 30, 40] , 输出:4.0 . 像这样


    1.PNG

解决思路:

那么这道题的解决思路是怎样的呢,前四个不用等待有空闲柜台,第五个客户需要等待,必须等到第一个先办理完取款的人离开才能办理,那么他的等待时间就是第一个办理完人的到达时间+办理时间-自身的到达时间。后面的依次类推。如果前面的人有等待的时间,还要把这个时间算进去。 每循环一次,都需要将办理柜台取款的人的办理后的时间进行重新排序计算出最先办理完取款的人。 排序这里用的是java的Comparator接口 那么就需要两个数组,一个存所有客户按到达时间排序的数组,一个存办理取款的人的数组。每当办理取款的数组排序完毕后就相当于有人已经取完款了,这时最新办完取款的客户移除,将下一个客户添加到柜台取款的数组中,随后进行排序。 最后将所有客户的等待时间进行算数平均值计算。

解决:
  • 1:定义一个Person类,属性存入到达时间,办理业务时间,等待时间.


    2.PNG
  • 2:在测试类main方法中,首先做一些基础操作


    3.PNG
  • 3:创建一个存入客户的数组,数组长度等于arriveTime数组或process数组的长度


    4.PNG
  • 4:初始化操作并将客户数组按到达时间进行排序,截取排好序的数组的前四个数据存入新数组,代表正在柜台办理业务的客户:


    5.PNG
  • 这个init()是自定义的方法,下文的sort()也是:


    6.PNG
7.PNG
  • 5:因为前四个人没有等待时间,所以从第五个人开始循环


    8.PNG
  • 6:计算所有人的等待时间之和,并求出平均数:


    9.PNG
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 某银行有4个柜台,假设某天有若干为客户来办理业务,每个客户到达银行的时间和取款需要的时间分布分别用两个数组arri...
    喵子G阅读 1,706评论 0 1
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,913评论 1 45
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,709评论 1 32
  • 双滩赴海声先号,独珠回峰映澄江。 城南旧道忆往昔,谁人独立望海川。 澄迈老城不仅有得天独厚的自然美景,也有几千年文...
    YKW王裕軍阅读 479评论 0 1
  • 忘年愁 又是一年枫红坡 你的笑 嫣然比花俏 情堪比金坚 那知生活悠 少年逐 女子俏 蓦然回首 都已白了头 以为风华...
    职场有料妹阅读 641评论 8 9

友情链接更多精彩内容