【发布时间】:2016-03-24 23:13:33
【问题描述】:
我的 Queue 类有问题。队列基于数组。当队列项到达数组的末尾时,它们应该被添加到数组的开头。如果队列已满,则应删除并显示最旧的队列项。插入第 8 个元素时,我无法显示已删除的最旧项目。
当用户选择显示前 3 个客户的姓名时,代码应将他们从队列中逐个移除(先进先出)并在移除时显示。
输入输出示例:
队列输入为:
一种
b
C
d
e
F
G
h
队列输出为:
H
b
C
d
e
F
g
删除的项目是:h
预期的输出应该是:
H
b
C
d
e
F
G
删除的项目是:a
所以它将最后插入的项目移动到数组的前面但是我如何显示“删除的项目是:a”
我的代码是:
public class MyQueue {
private final static int CAPACITY = 7;
static String qitems[] = new String[CAPACITY];
private static int front = 0, end = 0, count=0;
public void addqueue(String name) {
qitems[end] = name;
count++;
if(count==7) {
takequeue();
System.out.println("Queue is full");
}
end = (end + 1) % 7;
}
public void takequeue() {
System.out.println("Item removed:"+qitems[front]);
front = (front +1) % 7;
}
public void displayNames() {
System.out.println(" 3 names entered are: ");
for (int x = 0; x < 3; x++) {
System.out.println(qitems[x]);
}
}
}
【问题讨论】:
-
您的代码对我来说似乎工作正常。
-
问题是它不会显示删除的项目是:a 它显示删除的项目是:h
-
添加 8 个名称后会发生什么情况?它永远不会再等于 7。
-
不是增加计数,而是尝试测试数组是否已满,即
qitems.length == 7 -
检查我的答案。另外,我认为添加第 9 个值时该方法不起作用,因此您应该考虑将条件更改为 count >= 7