Как я могу использовать toString() для вывода связанного списка целых чисел в Java?

#java #list #tostring

Вопрос:

В настоящее время я создаю программу для печати связанного списка случайных целых чисел с помощью метода toString (). Однако, как бы то ни было, моя программа не содержит ошибок, но ничего не печатает. У меня такое чувство, что ошибка может быть связана с оператором val != null в toString (), но я очень новичок в toString() и связанных списках, поэтому не могу сказать наверняка. Почему моя программа не выводит связанный список?

 import java.util.Random;
import java.util.*;
public class IntList {
    private class Node {
        int value;
        Node next;
    }
    private Node head;

    public IntList(int n) {
        LinkedList<Integer> list = new LinkedList<Integer>();
        Random rand = new Random();
        for (int i = 0; i < n; i  ) {
            list.add(rand.nextInt(n));
        }
    }

    public String toString() {
        String result = "";
        for(IntList.Node val = head; val != null; val = val.next) {
            result  = val.value;
        }
        return resu<
    }

    public static void main(String[] args) {
        IntList list = new IntList(6);
        System.out.println(list);
    }
}
 

Если ошибка где-то в другом месте, а не в toString (), пожалуйста, дайте мне знать, и я постараюсь ее найти!

Ответ №1:

Вы не добавляете узел в свой список элементов в своем конструкторе. Ваш заголовок инициализирован нулем, поэтому печатать нечего.

Расширьте свой конструктор чем-то подобным.

 public IntList(int n) {
        LinkedList<Integer> list = new LinkedList<Integer>();
        Random rand = new Random();
        for (int i = 0; i < n; i  ) {
            list.add(rand.nextInt(n));
        }
        //Init head
        this.head = new Node(list.get(0),null); //Add constructor to the Node
        // Append all the elements from the list.
        for(int i : list){
        Node lastNode = head;
        while(lastNode.getNext() != null){ 
           lastNode = lastNode.getNext(); 
        }
        lastNode.setNext( new Node(i,null));
        }
    }