为什么Java给了我一个null异常?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (59)

我是链接列表和创建节点的新手。我一直试图解决这个问题,但我没有运气。我很确定它的东西真的很简单,但我非常天真的编码所以我将非常感谢你的帮助。至于控制台盒子,这正是我插入10个整数后所得到的。

"Exception in thread "main" java.lang.NullPointerException
    at LinkedLists.LinkedList.get(Lab4bLinkedList.java:39)
    at LinkedLists.Lab4BLinkedList.sum(Lab4bLinkedList.java:65)
    at LinkedLists.Lab4BLinkedList.main(Lab4bLinkedList.java:59)

列表:LinkedLists.LinkedList@5e481248

处理完成,退出代码为1“

package LinkedLists;

import java.util.Scanner;

class LinkedList {
    private Node head;

static class Node {
    int data;
    Node next;

    Node(int d) {
        data = d;
        next = null;
    }
}

void add(int n) {
    Node newnode = new Node(n);

    if (head == null) {
        head = newnode;
        newnode.next = null;
        return;
    } else {
        Node end = head;
        while (end.next != null) {
            end = end.next;
        }
        end.next = newnode;
        return;
    }
}

int get(int in) {
    int i = 0;
    Node current = head;
    while (i != in) {
        current = current.next;
    }
    return current.data;
}


}

class Lab4BLinkedList {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        LinkedList ll = new LinkedList();
        System.out.println("Enter 10 numbers: ");
        for (int i = 0; i < 10; i++) {
            ll.add(scan.nextInt());
        }
    System.out.println();
    System.out.print("List: " + ll);
    System.out.println();
    System.out.println("Sum = " + sum(ll));
}

private static int sum(LinkedList ll) {
    int sum = 0;
    for (int i = 0; i < 10; i++) {
        sum += ll.get(i);
    }
    return sum;
}

}

提问于
用户回答回答于

你的get方法while循环将永远运行,因为没有更新i。每次循环更新当前指向下一个节点,直到它变为空,然后代码尝试指向下一个 - >这会抛出一个空的Pinter异常

扫码关注云+社区

领取腾讯云代金券