public class Queue {
public static void main(String[] args) {
Queue<Integer> myQueue = new LinkedList<Integer>();
Random generator = new Random();
int totalTime = 60;
int lineSize=0;
int serviceTime;
int currentPatronTimeLeft=50;
int timeKeeper;
int newPatron;
int totalCheckedOut=0;
do
{
//for new customer 25%of the time
serviceTime = generator.nextInt(5) + 1;
newPatron = generator.nextInt(4) + 1;
//nested if else to control the adding and removing of items based on service time and the 25% stat
if(newPatron == 1)
{
myQueue.add( new Integer(serviceTime));
System.out.println("a new customer has been added to line");
lineSize++;
System.out.println("The Queue size is now: "+ lineSize);
currentPatronTimeLeft = myQueue.peek();
}
else if(currentPatronTimeLeft == 0 && lineSize != 0)
{
myQueue.poll();
lineSize--;
System.out.println("A customer has been removed from the queue");
totalCheckedOut++;
System.out.println("The Queue size is now: "+ lineSize);
}
else if (lineSize != 0)
{
currentPatronTimeLeft =myQueue.peek();
}
currentPatronTimeLeft--;
totalTime--;
System.out.println();
System.out.println("---------------------------------------------------");
}while(totalTime != 0);
System.out.println();
}
}
我无法让我的程序在应该完成serviceTime后从队列中删除人员。任何帮助将不胜感激。程序产生的输出有点像这样
---------------------------------------------------
---------------------------------------------------
a new customer has been added to line
The Queue size is now: 1
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
a new customer has been added to line
The Queue size is now: 2
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
a new customer has been added to line
The Queue size is now: 3
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
a new customer has been added to line
The Queue size is now: 4
---------------------------------------------------
---------------------------------------------------
a new customer has been added to line
The Queue size is now: 5
---------------------------------------------------
a new customer has been added to line
The Queue size is now: 6
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
a new customer has been added to line
The Queue size is now: 7
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
a new customer has been added to line
The Queue size is now: 8
---------------------------------------------------
---------------------------------------------------
a new customer has been added to line
The Queue size is now: 9
---------------------------------------------------
a new customer has been added to line
The Queue size is now: 10
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
a new customer has been added to line
The Queue size is now: 11
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
a new customer has been added to line
The Queue size is now: 12
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
a new customer has been added to line
The Queue size is now: 13
---------------------------------------------------
a new customer has been added to line
The Queue size is now: 14
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
答案 0 :(得分:2)
从代码中删除以下条件:
else if(lineSize != 0)
{
currentPatronTimeLeft =myQueue.peek();
}
它应该可以正常工作
答案 1 :(得分:0)
您的问题在于代码的这一部分:
else if (lineSize != 0)
{
currentPatronTimeLeft =myQueue.peek();
}
currentPatronTimeLeft--;
如果没有人被添加到队列中,并且当前的队列未完成,则将currentPatronTimeLeft
更新为当前客户端的起始值。之后,你减少它。如果在下一次迭代中,没有新的客户端添加到队列中,那么当前的客户端将不会完成,因为他剩下的时间是他从开始的时间 - 1.然后你将currentPatronTimeLeft
更新为它的起始值在减少它之前再次。这样它永远不会变为0。
解决方案:
else if(currentPatronTimeLeft == 0 && lineSize != 0)
{
myQueue.poll();
lineSize--;
// insert following lines:
if (lineSize > 0) {
currentPatronTimeLeft =myQueue.peek() + 1; // +1 <--> following decrement
}
// end of my insert
System.out.println("A customer has been removed from the queue");
totalCheckedOut++;
System.out.println("The Queue size is now: "+ lineSize);
}
你必须摆脱整个else if (lineSize != 0)
阻止。
答案 2 :(得分:0)
你遇到的if-else有问题,currentPatronTimeLeft将永远是第一个元素,因此永远不会达到零。快速修复将使用另一个变量用于其中一个目的。