Java Lists-RemoveFirst获取NullPointerException
我尝试使用列表执行removeFirst(),该列表删除列表的第一个节点并返回删除的值 以下是我得到的:Java Lists-RemoveFirst获取NullPointerException,java,Java,我尝试使用列表执行removeFirst(),该列表删除列表的第一个节点并返回删除的值 以下是我得到的: public E removeFirst() { E value=first.val; first=first.next; size--; return value; } public void addLast(E v) { last = new Node(v,last); size++; }
public E removeFirst() {
E value=first.val;
first=first.next;
size--;
return value;
}
public void addLast(E v) {
last = new Node(v,last);
size++;
}
其他类别:
class Cliente {
String nome;
int tchegada;
int np;
Cliente(String n, int tc, int p) {
nome = n;
tchegada = tc;
np = p;
}
}
名单如下:
class List<E> {
private int size;
private Node first;
private Node last;
public boolean isEmpty() {return (size == 0);}
public int size() {return size;}
// construtor de lista vazia
List() {
size = 0;
first = last = null;
}
// um no da lista
private class Node {
E val;
Node next;
Node(E v, Node n) {
val = v;
next = n;
}
}
(...)
编辑:当列表为空时,将不使用RemoveFirst。但我发现当大小为1时,会生成异常。如何修复此问题?如果您的列表中只有一个元素,则此代码段:
public E removeFirst() {
E value=first.val;
first=first.next;
size--;
}
return value;
}
将导致NullPointException
public E removeFirst() {
E value=first.val;
if (size>=2)
{
first=first.next;
}
else if (size==1)
{
last=null;
}
size--;
return value;
}
您需要确保列表中有某些内容,否则
removeFirst()
会爆炸这里的问题是first=first.next代码>
如果您的列表只有一个元素,则不会有下一个节点,因此为空。但是我应该如何修复它?尝试添加一个条件,但仍然得到相同的结果。首先确定返回异常的行(在Prob_106.java中的第80行)。如果错误行为first=first.next;然后尝试:如果大小+1->value=first.val;第一个=空;如果大小>1->正常执行。对不起,格式不好,我是新来的:P
public E removeFirst() {
E value=first.val;
first=first.next;
size--;
}
return value;
}
public E removeFirst() {
E value=first.val;
if (size>=2)
{
first=first.next;
}
else if (size==1)
{
last=null;
}
size--;
return value;
}