您好我是Java的新手,并且在构建DoublyLinkedList时遇到了这个问题。我在运行测试程序时遇到此错误。任何人都可以建议我的代码修复?任何帮助是极大的赞赏! 错误信息: 线程“main”中的异常java.lang.ClassCastException:hw3.Deque $ Node无法强制转换为java.lang.Integer
@SuppressWarnings("unchecked")
public E removeFirst(){ // delete and return the item at the front
Node temp=head;
if (isEmpty()){ throw new NoSuchElementException(); }
else{
if(head.next==null){
head=null;
tail=null;
}else{
head=head.next;
head.prev=null;
}
return (E) head;
}
}
答案 0 :(得分:0)
System.out.printf("\nThe winner is %d\n", dq.removeFirst());
removeFirst
返回Node
而不是Integer
。
public E removeFirst(){
Node temp=head;
if (isEmpty()){ throw new NoSuchElementException(); }
else{
if(head.next==null){
head=null;
tail=null;
}else{
head=head.next;
head.prev=null;
}
return (E) head; // head is of type Node
}
}
答案 1 :(得分:0)
这是非常可疑的:@SuppressWarnings("unchecked")
。除非你有充分的理由,否则不要压制警告,在这些情况下,你通常应该添加一条评论说明这个原因。
如果删除此注释,您将在以下行中收到编译警告:
return (E) head;
将此更改为head.item
将解决此问题,但更有可能是:
return temp.item;