队列的 toString() 方法 class

toString() method for Queue class

只是一个简单的问题,如果我创建了一个 Queue class 并初始化了这个

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 有它,它似乎无法按我想要的方式工作,而且我知道它不是 nItemsmaxSize,因为那样会打印整个 queue,包括空槽,我只想要更新的 queue。 我知道对于 Stack,您只能打印到 top 变量,但我对 Queue class.

更加困惑

这些是我的 enqueuedequeue 方法:

 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;
 }

当你执行队列和双端队列时,你应该在 class 中操作一个变量。所以一开始它会等于 0。在每次排队或出队后,您将相应地 ++ 或 -- 它。

那么这是您在 toString 中用来定义循环结束边界的变量。要像这样在 class 中的任何地方使用它,它也应该是一个实例变量。

编辑: 在您添加的代码之后,似乎应该是 nitems