循环链接列表:NullPointerException错误

时间:2018-12-06 02:54:41

标签: java circular-list

在print语句中获取NullPointerException错误,它正在打印我在驱动程序中输入和需要的所有内容。但是紧接着它会导致NullPointException错误。我需要这个来工作,由于这个错误,我以后无法再使用其他任何方法。

我对此tmr进行了测试,不知道为什么会导致此异常错误。请帮忙!谢谢。

我尝试过的事情:

import java.util.Scanner;
import java.util.*;
import java.io.*;

public class StringNode 
{
//attributes
private String data;
private StringNode link;
//nodes counter
int numNodes =0;

Scanner kb = new Scanner(System.in);

//constructor
public StringNode(String iData, StringNode iLink)
{
data = iData;
link = iLink;
}

//create empty list 
StringNode list = null;



//*********Create method: addToFrontFILI
public void addToFrontBM(String newN)
{
list = new StringNode(newN, list);
System.out.println("A node has been added to the front.");
numNodes++;
System.out.println("NumNodes:" +numNodes);
}

//---------------------Works but causes Nullpointer Exception------------
//Create method: printLLFILI
public void printLLBM() 
{
StringNode tptr = list;

while(tptr.link != list)
{
System.out.println(tptr.data);
tptr = tptr.link;
}

System.out.println(tptr.data);

}

2 个答案:

答案 0 :(得分:0)

tptr = tptr.link;,此行会将最后一个null元素分配给tptr,但是while仅检查tptr.link,这将导致NullPointerException。将代码更新为:

while( tptr != null && tptr.link != list)

答案 1 :(得分:0)

检查下面的代码,当tptr为空时,您什么也没有做;当tptr为空时,将发生NPE。

while(tptr.link != list)
{
  System.out.println(tptr.data);
  tptr = tptr.link;
}

您可以更改为以下内容:

while(tptr!=null && tptr.link != list)
{
  System.out.println(tptr.data);
  tptr = tptr.link;
}