Круговой связанный список: ошибка NullPointerException - PullRequest
0 голосов
/ 06 декабря 2018

Получая ошибку 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 голосов
/ 06 декабря 2018

Проверьте код ниже, вы ничего не делаете, когда 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;
}
0 голосов
/ 06 декабря 2018

tptr = tptr.link; эта строка назначит последний null элемент для tptr, но while проверяет только tptr.link, это вызовет исключение NullPointerException.обновить код до:

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