Member 14079184 Ответов: 1

Пожалуйста, помогите: ошибка кругового связанного списка nullpointerexception


Получая ошибку NullPointerException в операторе print, он печатает все, что я ввожу и что мне нужно в драйвере. Но сразу после этого возникает ошибка 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);
      
   }

Mohibur Rashid

В круговом связанном списке вам также нужно знать свою предыдущую ссылку, ваше определение отсутствует.

1 Ответов

Рейтинг:
0

Patrice T

Цитата:
Получая ошибку NullPointerException в операторе print, он печатает все, что я ввожу и что мне нужно в драйвере. Но сразу после этого возникает ошибка NullPointException.

Мы не можем использовать этот фрагмент кода для воспроизведения проблемы, потому что он не является автономным, мы не можем запустить этот код.
Измените код так, чтобы он запускался и создавал проблему без ввода данных пользователем.
Цитата:
У меня есть тест на этом tmr, и я понятия не имею, почему он вызывает эту ошибку исключения.

Ваш код ведет себя не так, как вы ожидаете, или вы не понимаете, почему !

Существует почти универсальное решение: запускайте свой код на отладчике шаг за шагом, проверяйте переменные.
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не знает, что должен делать ваш код, он не находит ошибок, он просто помогает вам, показывая, что происходит. Когда код не делает того, что ожидается, вы близки к ошибке.
Чтобы увидеть, что делает ваш код: просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик - Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010 - YouTube[^]

Отладка кода C# в Visual Studio - YouTube[^]

Отладчик здесь только для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.