只是一个简单的问题,如果我创建了一个Queue
类并初始化了这个
Queue queue = new Queue(5)
在main方法中,然后相应地排队并出列,
使用以下实例变量和toString()
方法:
private int maxSize;
private Planes[] queArray;
private int front;
private int rear;
private int nItems;
public String toString()
{
String result = "[";
for(int i = 0; i <= rear; i++)
{
result += " " + queArray[i];
if(i <= rear - 1)
result += ",";
}
result += " ]";
return result;
}//toString`
我在for
循环中停止了哪个变量:
for(int i = 0; i <= rear; i++)
,
现在我在rear
处找到它,这似乎不符合我的要求,而且我知道它不是nItems
或maxSize
,因为它会打印出来整个queue
,包括空插槽,我只想要更新的queue
。
我知道对于Stack
,您只打印到top
变量,但我对Queue
类更加困惑。
这些是我的enqueue
和dequeue
方法:
public void enqueue(Plane name)
{
if(rear == maxSize-1)
{
rear = -1;
}
rear++;
queArray[rear] = name;
nItems++;
}
public Plane dequeue()
{
Plane temp = queArray[front];
front++;
if(front == maxSize)
{
front = 0;
}
nItems--;
return temp;
}
答案 0 :(得分:0)
当你进行队列和双端队列时,你应该操纵类中的变量。所以在开始时它将等于0.在每个队列或相应的队列后,你将++或 - 它。
然后,这是您在toString中使用的变量,用于定义循环的结束边界。要在类中的任何地方使用它,它也应该是一个实例变量。
编辑:
在您添加的代码之后,似乎应该是nitems