добавление элементов в двусвязный список - PullRequest
1 голос
/ 30 мая 2010

это мой код для основного класса и двусвязного класса и класса узла, но когда я запускаю программу, в консоли появится этот «datastructureproject.DoublyLinkedList@19ee1ac» вместо случайных чисел. Пожалуйста, помогите мне, спасибо!

основной класс:

    public class Main {

    public static int getRandomNumber(double min, double max) {
        Random random = new Random();
        return (int) (random.nextDouble() * (max - min) + min);

    }

    public static void main(String[] args) {
        int j;
        int i = 0;
        i = getRandomNumber(10, 10000);
        DoublyLinkedList listOne = new DoublyLinkedList();

        for (j = 0; j <= i / 2; j++) {
            listOne.add(getRandomNumber(10, 10000));


        }
        System.out.println(listOne);

    }
}

класс двусвязных списков:

public class DoublyLinkedList {

private Node head ;
private Node tail;
private long size = 0;

public DoublyLinkedList() {
    head= new Node(0, null, null);
    tail = new Node(0, head, null);
}



public void add(int i){

head.setValue(i);
Node newNode = new Node();
head.setNext(newNode);
newNode.setPrev(head);
newNode = head;

}
public  String toString() {
StringBuffer result = new StringBuffer();
result.append("(head) - ");
Node temp = head;
while (temp.getNext() != tail) {
    temp = temp.getNext();
    result.append(temp.getValue() + " - ");
}
result.append("(tail)");
    return result.toString();
}
  }

и класс узла похож на класс, который вы видели раньше (Node prev, Node next, int value)

отредактировано: я добавил метод toString, но покажу исключение нулевого указателя для строки "result.append (temp.getValue () +" - ");" пожалуйста, помогите мне спасибо

Ответы [ 3 ]

2 голосов
/ 30 мая 2010

Когда вы вызываете System.out.println для объекта, он (любезно) вызывает метод toString для этого объекта. Если вы не определили toString для объекта, вы получите тот, который был определен одним из его предков. В вашем случае вы ничего не расширяете, поэтому вы получите toString Object - вероятно, не то, что вы хотите.

Попробуйте определить метод toString () в вашем классе. В нем вы, вероятно, должны зациклить узлы и построить String, содержащий требуемое представление.

1 голос
/ 30 мая 2010

Когда вы печатаете объект, он выполняет метод .toString (). То, что вы видите, является реализацией по умолчанию toString.

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

0 голосов
/ 30 мая 2010

работает System.out.println(Object); необходимо преобразовать Object в строку. Это достигается путем выполнения метода toString. Если объект не реализован toString, используется реализация по умолчанию, которая возвращает имя класса и его хэш-код.

вам нужно будет либо переопределить объект и предоставить подходящий toString, либо выполнить цикл по элементам и построить строку до вызова println самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...