如题,书上的例子。
营业员类:
//营业员类 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分钟