Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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 将节点添加到列表中。目前,我无法添加第二个节点。_Java_Linked List_Custom Lists - Fatal编程技术网

Java 将节点添加到列表中。目前,我无法添加第二个节点。

Java 将节点添加到列表中。目前,我无法添加第二个节点。,java,linked-list,custom-lists,Java,Linked List,Custom Lists,这看起来很像家庭作业,所以我不会在这里放任何代码,但在else语句中,您将找到新节点的插入点,并将新节点的next to指向列表的其余部分,但是您实际上并没有在任何时候将新节点放入列表中。假设您有一个单节点列表[HEAD]>null。现在将执行以下行: public void addNode(Car newCarEntry){ ListNode currentNode; ListNode newNode = new ListNode(newCarEntry); if (

这看起来很像家庭作业,所以我不会在这里放任何代码,但在else语句中,您将找到新节点的插入点,并将新节点的next to指向列表的其余部分,但是您实际上并没有在任何时候将新节点放入列表中。

假设您有一个单节点列表
[HEAD]>null
。现在将执行以下行:

public void addNode(Car newCarEntry){
    ListNode currentNode;
    ListNode newNode = new ListNode(newCarEntry);

    if (head == null || newCarEntry.isNewerThan(head.carItem)){
        newNode.next = head;
        head = newNode;
    }else{
        currentNode = head.next;
        while(currentNode != null && !newCarEntry.isNewerThan(currentNode.carItem) ){
            currentNode = currentNode.next;
        }
        currentNode.next = newNode.next;
        currentNode = newNode;
    }
    numberOfNodes++;
}
因此,当您尝试添加第二个节点时,它将给您一个空指针异常(访问
currentNode.next

编辑后:现在将不再出现空指针异常。相反,会发生以下情况:

currentNode = head.next; // => null
while(currentNode.next != null && !newCarEntry.isNewerThan(currentNode.carItem) ){
    ...
}

您只更改局部变量
newNode
,而根本不更改列表或标题。

请编辑您的问题,使用更合理的标题,并给出更清晰的描述。有关更多建议,请参阅。当您尝试调试程序时,会看到什么?
newNode.next=currentNode;newNode=currentNode我通常会看到第一个节点被添加两次,而不是第二个节点被添加。这是一个库存程序。该列表将汽车添加到回转台。不是为了家庭作业,我的CS课程还没有考虑我如何设计链表,我是CS一年级的学生。因此,我的问题与指针,我无法正确地实现一个链表。这就是我来stackoverflow的原因。。。希望我能通过使用else语句来抽象在第一个节点之后添加节点的过程,快速获得一个关于如何将节点添加到此列表的教程。如果不是为了家庭作业,为什么要编写自己的链接列表?我需要使用多个属性、汽车里程、make和model对节点进行排序。也许您可以查看or接口,以便诚实地使用,除了编写自己的列表类之外,我建议基本上什么都可以。此时,它应该跳过while循环并添加节点。K我编辑了它,因此它将添加指向列表的从newNode到currentNode的指针。
currentNode = head.next;              // => null
while(currentNode != null && ...) {   // => not entering loop
    ...
}
newNode.next = currentNode;           // => i.e. null
newNode = currentNode;                // => i.e. null