我被赋予一项任务,无需扩展程序即可从头开始创建优先级队列。
当前的基本任务是为IT票务系统创建优先级队列,该队列使IT工作者可以确定公司中哪些任务必须首先完成。 (优先级= 1->最高优先级,最低4)。
我正在尝试通过单链列表进行操作。
我的问题是,一旦我的insertInQueue(Ticket T)函数获取了最后一个值,它就会失败。
失败返回语句为
Exception in thread "main" java.lang.NullPointerException
at Queue.insertInQueue(Queue.java:36)
(第36行的代码行):
`if( temp.getNextTicket().getPriority() > T.getPriority())
at Main.main(Main.java:21)
(进入系统的最后一个对象)
private Ticket head;
private Ticket tail;
public void insertInQueue(Ticket T){
Ticket temp = head;
if(head == null){ //When no values are in the queue
head = T; //head = Ticket
tail = T; //tail = Ticket
}else if(T.getNextTicket() == null){
tail.setNextTicket(T);
tail = T;
}
else{
while( temp != null ){
if( temp.getNextTicket().getPriority() > T.getPriority()){
T.setNextTicket(temp.getNextTicket());
temp.setNextTicket(T);
}
temp = temp.getNextTicket();
}
}
}
输入示例:
Ticket T8 = new Ticket(8, "Ben_DG", 4);
我尝试了几种不同的方法,但是什么都没得到。有人可以帮我吗?
如果您需要更多我的代码,请告诉我,我将其发布。 (只是有点担心一些同学会偷走它)
谢谢!
答案 0 :(得分:0)
由于您尚未提供用于设置和获取下一张票的其余代码,因此我无法确定,但是从逻辑上讲,您尝试使用get方法获取NULL值,你的错误。正确检查所有条件,并查看是否未尝试获取NULL值。
这应该是主要问题并应解决