请教各位大虾,见代码如下interface QueueInterface
{
public boolean isEmpty();
public void addTail(String name);
public Man removeHead();
public void show();
}
public class Man
{
private String name;
private static int count;

public Man(String name)
{
this.name=name;
++count;
}

public String getName() { return name; }

public static int getCount() { return count; }
}
//import Man;
class QueueClass implements QueueInterface
{
private int head;
private int tail;
private Man queue[];

public void QueueClass()
{
head=tail=0;
queue=new Man[4];
}

public boolean isEmpty()
{
return (head==tail)?true:false;
}

public void addTail(String name)
{
if ((tail+1)%queue.length==head)
System.out.println("队列满了"+name+"无法加入");
else
queue[++tail % queue.length]=new Man(name);
}

public Man removeHead()
{
if (isEmpty())
{
System.out.println("队列空白");
return new Man(" ");
}
head=(head+1)%queue.length;
return queue[head];
}

public void show()
{
int p=head;
System.out.print("显示队列");
while (p!=tail)
{
p=(p+1)%queue.length;
System.out.print(queue[p].getName()+" ");
}
System.out.println();
}
}
//=======================MyQueue.java===================151
//import QueueInterface;
//import QueueClass;
public class MyQueue
{
public static QueueClass q;

public static void main(String args[])
{
q=new QueueClass();
q.addTail("张三");
q.addTail("李四");
q.addTail("王五");
while(!q.isEmpty())
{
q.show();
System.out.println("移出 "+q.removeHead().getName());
}
}
}编译MyQueue.java没有报错,但运行就报错
Exception in thread "main" java.lang.NullPointerException
at QueueClass.addTail(QueueClass.java:18)
at MyQueue.main(MyQueue.java:10)
值为空不知道,咋会事,请大虾们帮忙解答。

解决方案 »

  1.   

    把public void QueueClass()改成public QueueClass()就不报错了。郁闷!
    为啥呢? 
      

  2.   

    public void QueueClass()
        {
            head=tail=0;
            queue=new Man[4];
        }
    是什么哟?构造函数是没有返回值的
      

  3.   

    public void QueueClass() 
        { 
            head=tail=0; 
            queue=new Man[4]; 
        } 
    不能这样定义的方法和类名相同,这里应当是一个构造函数,不能有返回值,构造函数是初始化的
      

  4.   

    我记的在写QueueClass.java的时候,public QueueClass()是没有加void,但编译的时候报错,我就加了个void就没报错了。
    晕死!刚开始学习java,多谢各位的指点。结贴了