请教各位大虾,见代码如下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)
值为空不知道,咋会事,请大虾们帮忙解答。
{
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)
值为空不知道,咋会事,请大虾们帮忙解答。
为啥呢?
{
head=tail=0;
queue=new Man[4];
}
是什么哟?构造函数是没有返回值的
{
head=tail=0;
queue=new Man[4];
}
不能这样定义的方法和类名相同,这里应当是一个构造函数,不能有返回值,构造函数是初始化的
晕死!刚开始学习java,多谢各位的指点。结贴了