如何修复在线程和 nullPointerExceptions 中输出异常的链表测试器类?

我正在开发一个链表项目,需要编写一个 ListTester 来创建一个 linkedList,然后使用包含每个新对象名称的对象添加方法应该打印出整个列表,然后打印头(第一个)名称。但实际发生的情况是,它打印一半写入“Exception in thread "main" Actor{ name = EFZASD}”,然后继续打印,并在尝试打印标头时给出空指针异常。

我曾多次尝试重写 add 方法,但似乎确实改变了任何东西或使情况变得更糟

我的结果:


Actor{ name = WQWR}


Actor{ name = GFSXCZ}


Exception in thread "main" Actor{ name = EFZASD}


Actor{ name = ERRER}


Actor{ name = ADAD}


null


java.lang.NullPointerException

    at ActorLinkedList.get(ActorLinkedList.java:29)

    at ListTester.main(ListTester.java:14)

预期输出:



Actor{ name = WQWR}


Actor{ name = GFSXCZ}


{ name = EFZASD}


Actor{ name = ERRER}


Actor{ name = ADAD}


//printed header here


守着星空守着你
浏览 105回答 1
1回答

胡说叔叔

问题出在你的count变量上。它在您的班级中被声明为全局的ActorLinkedList。每当你在循环中执行时,你的值就会增加 5(列表的大小)并添加到先前的值。当列表大小大于列表大小时,这将导致 NullPointerException ,在循环的第 5 次迭代时,列表大小将变为 >25 。 要修复它,只需将 您的值重置为 0即可正常工作。list.size()forcountcounticountforcountsize()int size() {    count = 0;    Actor current = head;    while (current != null) {        current = current.next;        count++;    }    return count;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java