package sun.way;
class QueueT {
private int maxSize;
private int[] queArr;
private int front;
private int rear;
private int nItems;

public QueueT(int s) {
maxSize = s;
queArr = new int[maxSize];
front = 0;
rear = -1;
nItems = 0;
}

public void insert(int j) {
if (isFull())
return;
if (rear == maxSize - 1)
rear = -1;
queArr[++rear] = j;
nItems++;
}

public int remove() {
int temp = queArr[front++];
if (front == maxSize)
front = 0;
nItems--;
return temp;
}

public int peekFront(){
return queArr[front];
}

public boolean isEmpty() {
return (nItems == 0);
}

public boolean isFull() {
return (nItems == maxSize);
}

public int size() {
return nItems;
}
public String toString() {
StringBuffer sb = new StringBuffer();
for (int i = rear; i >=0; i--) {
sb.append("" + queArr[i] + " ");
}
return sb.toString();
}
}public class QueueApp {
public static void main(String[] args) {
QueueT theQueue = new QueueT(10);
theQueue.insert(39);
theQueue.insert(23);
theQueue.insert(12);
theQueue.insert(54);
theQueue.insert(63);
theQueue.insert(36);

System.out.print(theQueue);
System.out.println();
if (!theQueue.isEmpty())
System.out.println("删除" + theQueue.remove());
System.out.println("------------------");
System.out.print(theQueue);
}
}
这个队列的tostring方法那里错了...为什么删除一个后打印还是一样的?
有什么办法没.帮忙改下啊

解决方案 »

  1.   

     for (int i = rear;
    这个rear 我怎么在remove里面没看到调整啊?
      

  2.   

    发现了....可是remove里面要改的话要结构就改的乱死了
    有没有直接可以在tostring里面改的
    点醒下
      

  3.   

     public String toString() {
            StringBuffer sb = new StringBuffer();
            for (int i = rear; i >=front; i--) {
                sb.append("" + queArr[i] + " ");
            }
            return sb.toString();
        }
      

  4.   

    哥们可能是你的return sb.toString();发生了无意识递归
      

  5.   

    你这里的toString()方法有问题哦,你最后 return sb.toString(); 不是又去调用toString()就这样无意识的递归下去~~~~
      

  6.   

    public String toString(){
    StringBuffer sb=new StringBuffer();
    for (int i = front,j=front; j < front+nItems; i++,j++) {//j控制循环次数,i控制数组下标
    if (i==maxSize) {
    i=0;
    }
    sb.append(queArr[i]+" ");
    }
    return sb.toString();
    }
    我自己研究了半天,写成这样可以了。