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分钟

原文地址:https://www.cnblogs.com/wanjinliu/p/13901387.html