• java队列-营业厅


    如题,书上的例子。

    营业员类:

    //营业员类
    public class Yyy
    {
        int xian,spend;//营业员空闲时刻,办理一个业务花费的时间
        public Yyy(int _xian,int _spend)
        {
            xian=_xian;
            spend=_spend;
        }
    }

    营业厅类:

    public class Yyt
    {
        public Yyy[] a;//这个营业厅有三个营业员
        public int dd=0,c=0;//统计客户等待总时间和总客户数
        public Yyt()
        {
            a=new Yyy[3];
            a[0]=new Yyy(0, 4);
            a[1]=new Yyy(0, 5);
            a[2]=new Yyy(0, 6);
        }
        //接待一个“arrived”时间到达的客户
        public void jiedai(int arrived)
        {
            //找出最先空闲的营业员
            int p=0;
            if(a[p].xian>a[1].xian)
            {
                p=1;
            }
            if(a[p].xian>a[2].xian)
            {
                p=2;
            }
            //接待客户,累加等待时间
            if(a[p].xian>arrived)//客户先到,营业员后空闲
            {
                a[p].xian+=a[p].spend;//营业员下次空闲的时间
                //总等待时间增加
                dd+=a[p].xian-arrived;
            }
            else
            {
                a[p].xian=arrived+a[p].spend;//营业员下次空闲的时间
                //总等待时间增加
                dd+=a[p].spend;
            }
            //总人数增加
            c++;
        }
        public void countAll()
        {
            System.out.println("累计服务"+c+"人,累计服务"+dd+"分钟,平均每人等候约"+dd/c+"分钟");
        }
    }

    主类,包含用户队列及入队初始化,之后出队接受服务。

    代码如下:

    import java.util.LinkedList;
    import java.util.Queue;
    
    
    public class c1 {
        public static void main(String[] args) 
        {
            Yyt a=new Yyt();
            Queue<Integer> guests=new LinkedList<Integer>();
            for (int i = 0; i <6; i++)
            {
                guests.offer(1*i);
            }
            while(!guests.isEmpty())
            {
                a.jiedai(guests.poll());
            }
            a.countAll();
        }
    }

    运行结果:

    累计服务6人,累计服务34分钟,平均每人等候约5分钟

  • 相关阅读:
    让一个不固定高度的div,保持垂直水平居中的方法
    Set、Map、WeakSet 和 WeakMap
    JS 中常用的 Math 方法
    不使用 new,创建一个实例对象
    做一个弹窗
    变量提升
    事件委托实践
    vue组件通信
    新版vue脚手架关闭eslint
    图片懒加载原生js实现
  • 原文地址:https://www.cnblogs.com/wanjinliu/p/13901387.html
Copyright © 2020-2023  润新知