gpt4 book ai didi

java - 使用 LinkedQueue 模拟购物线

转载 作者:太空宇宙 更新时间:2023-11-04 09:06:54 25 4
gpt4 key购买 nike

我只是在寻找一个技巧来帮助我开始这个程序,这样我就可以有多个“行”。我目前有 1 行,正在尝试添加另外两行(LinkedQueues)。我需要编写一个包含 3 行的程序。而不是只有一行。我只是在寻找一些可能的帮助来尝试启动这个程序

public class WaitLine
{
private QueueInterface<Customer> line, line2, line3;
private int numberOfArrivals;
// private int numberOfArrivals1;
//private int numberOfArrivals2;
//private int numberOfArrivals3;
private int numberServed;
private int totalTimeWaited;

public WaitLine()
{
line = new LinkedQueue<>();
line2 = new LinkedQueue<>();
line3 = new LinkedQueue<>();

reset();
} // end default constructor

/** Task: Simulates a waiting line with one serving agent.
* @param duration the number of simulated minutes
* @param arrivalProbability a real number between 0 and 1, and the
* probability that a customer arrives at
* a given time
* @param maxTransactionTime the longest transaction time for a
* customer */
public void simulate(int duration, double arrivalProbability,
int maxTransactionTime)
{
int transactionTimeLeft = 0;

for (int clock = 0; clock < duration; clock++) {
if (Math.random() < arrivalProbability) {
numberOfArrivals++;
int transactionTime = (int)(Math.random() * maxTransactionTime + 1);
Customer nextArrival = new Customer(clock, transactionTime, numberOfArrivals);
line.enqueue(nextArrival);

System.out.println("Customer " + numberOfArrivals
+ " enters line at time " + clock
+ ". Transaction time is " + transactionTime);

} // end if

if (transactionTimeLeft > 0)
transactionTimeLeft--;

else if (!line.isEmpty())
{
Customer nextCustomer = line.dequeue();
transactionTimeLeft = nextCustomer.getTransactionTime() - 1;
int timeWaited = clock - nextCustomer.getArrivalTime();
totalTimeWaited = totalTimeWaited + timeWaited;
numberServed++;
System.out.println("Customer " + nextCustomer.getCustomerNumber()
+ " begins service at time " + clock
+ ". Time waited is " + timeWaited);


} // end if
} // end for
} // end simulate

/** Task: Displays summary results of the simulation. */
public void displayResults()
{
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
System.out.println();
System.out.println("LINE 1:");
System.out.println("Number served = " + numberServed);
System.out.println("Total time waited = " + totalTimeWaited);
double averageTimeWaited = ((double)totalTimeWaited) / numberServed;
System.out.println("Average time waited = " + averageTimeWaited);
int leftInLine = numberOfArrivals - numberServed;
System.out.println("Number left in line = " + leftInLine);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
System.out.println();
System.out.println("LINE 2:");
System.out.println("Number served = " + numberServed);
System.out.println("Total time waited = " + totalTimeWaited);
System.out.println("Average time waited = " + averageTimeWaited);
System.out.println("Number left in line = " + leftInLine);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
System.out.println();
System.out.println("LINE 3:");
System.out.println("Number served = " + numberServed);
System.out.println("Total time waited = " + totalTimeWaited);
System.out.println("Average time waited = " + averageTimeWaited);
System.out.println("Number left in line = " + leftInLine);
} // end displayResults

/** Task: Initializes the simulation. */
public final void reset()
{
line.clear();

numberOfArrivals = 0;
numberServed = 0;
totalTimeWaited = 0;
} // end reset
} // end WaitLine

最佳答案

也许 WaitLine 类必须只代表一行。从类成员中删除 line2, line3。然后添加另一个客户端类,该类将根据需要创建任意数量的 WaitLine 实例,并循环或并发调用它们的方法。

关于java - 使用 LinkedQueue 模拟购物线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60133223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com