Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Lists-RemoveFirst获取NullPointerException_Java - Fatal编程技术网

Java Lists-RemoveFirst获取NullPointerException

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++; }

我尝试使用列表执行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++;
}
其他类别:

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;
    }