![](/img/trans.png)
[英]Error in logic while making a toString() method for a generic queue class
[英]toString() method for Queue class
只是一个简单的问题,如果我创建了一个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。在每个队列或相应的出队之后,您将对其进行++或-。
然后,这就是您在toString中使用的变量,用于定义循环的结束边界。 要在此类的任何地方使用它,它也应该是一个实例变量。
编辑:添加代码后,似乎应该是nitems
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.