[英]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.