日期:2014-05-20  浏览次数:20722 次

队列类,显示不能QAQ
Java code

------------QueuInterface.java-----------
package com.Queue;//队列接口
//
interface QueueInterface {
    public boolean isEmpty();//是否为空
    public void addTail(String name,int number);//从尾部添加
    public Man removeHead();//从头部移除
    public void show();//显示每个队列元素
}
----------------Man.java-----------------
package com.Queue;//队列元素

public class Man {
    private String name;
    private int number;
    public Man(String name)
    { setName(name); }
    public Man(int number)
    { setNumber(number); }
    public Man(String name, int number)
    {
        setName(name);
        setNumber(number);
    }
    public void setName(String name)
    { this.name=name; }
    public void setNumber(int number)
    { this.number=number; }
    public String getName()
    { return name; }
    public int getNumber()
    { return number; }
}
-----------QueueClass.java-----------------
package com.Queue;//队列
//
public class QueueClass implements QueueInterface 
{
    private int head;
    private int tail;
    private Man queue[];
    public QueueClass()//初始化只能容纳4个元素
    {
        head=tail=0;
        queue=new Man[4];
    }
    public boolean isEmpty()//判断是否为空
    {
        return (head==tail)?true:false;
    }
    public void addTail(String name,int number)//从尾部添加
    {
        if((tail+1)%queue.length==head)
            System.out.println("队列满了     "+name+" "+number+"无法加入");
        else
            queue[(tail+1)%queue.length]=new Man(name,number);
    }
    public Man removeHead()//从头部删除
    {
        if(isEmpty())
        {
            System.out.println("队列是空的");
            return new Man("");
        }
        else
        {
            head=(head+1)%queue.length;
            return queue[head];
        }
    }
    public void show()//显示队列元素
    {
        int p=head;
        System.out.println("显示队列");
        while(p!=tail)
        {
            p=(p+1)%queue.length;
            System.out.println(queue[p].getName()+":"+queue[p].getNumber());
        }
        System.out.println();
    }
}
---------------MyQueue.java---------------
package com.Queue;

public class MyQueue {
    public static void main(String[] args)
    {
        QueueClass q=new QueueClass();
        q.addTail("haha", 0001);
        q.addTail("haha", 0002);
        q.addTail("haha", 0003);
        q.addTail("haha", 0004);
        q.addTail("haha", 0005);//初始化队列只能容纳4个元素,这里不是应该报队列已满,但在这里没有显示
        while(!q.isEmpty())
        {
            q.show();
            System.out.println("移出"+q.removeHead().getName());
        }
    }
}



上面的代码运行后什么结果也没有就结束了,不知道是哪里出错.
想要调试也不知道从何入手.
求前辈们指点,谢谢

------解决方案--------------------
这句有问题queue[(tail+1)%queue.length]=new Man(name,number);
------解决方案--------------------
不知楼主是否要这种效果?
Java code

队列满了     haha 5无法加入
显示队列
haha:1
haha:2
haha:3
haha:4

移出1
显示队列
haha:2
haha:3
haha:4

移出2
显示队列
haha:3
haha:4

移出3
显示队列
haha:4

移出4