java - ToString StringBuilder 不显示

标签 java

出于某种原因,我的 toString() 无法使用 StringBuilder 输入,而只能使用 System.out 调用。如果我没有 System.out.println() 调用,它将打印出空行。我以前使用过StringBuilder,以前没有发生过这种情况。我回顾了这些程序,它们的设置与我现在的方式类似。我假设它与 StringBuilder 内部的调用有关?

我仍在学习 Java,非常感谢您的帮助。这里列出的是我的程序代码:

class NodeUMUC<T> {

private T element;
private NodeUMUC<T> next;
private NodeUMUC<T> prev;

// Default Constructor
public NodeUMUC() {
    next = null;
    prev = null;
    element = null;
}

//constructor
public NodeUMUC(T element, NodeUMUC<T> next, NodeUMUC<T> prev) {
    this.element = element;
    this.next = next;
    this.prev = prev;
}

public void setElement(T element) {
    this.element = element;
}

public T getElement() {
    return element;
}

public void setNextNode(NodeUMUC<T> next) {
    this.next = next;
}

public NodeUMUC<T> getNextNode() {
    return next;
}

public void setPrevNode(NodeUMUC<T> prev) {
    this.prev = prev;
}

public NodeUMUC<T> getPrevNode() {
    return prev;
}

} // End NodeUMUC<T> 

public class LinkedListUMUC<T> {

private NodeUMUC<T> head;
private NodeUMUC<T> tail;
private int size;

// Default Constructor
public LinkedListUMUC() {
    size = 0;
}

// Return size of the linked list
public int size() {
    return size;
}

// Check for items in linked list
public boolean isEmpty() {
    return size == 0;
}

// Add element at begining
@SuppressWarnings("unchecked")
public void insertHead(T element) {
    NodeUMUC<T> insert = new NodeUMUC<>(element, head, null);
    if (head != null) {
        head.setPrevNode(insert);
    }
    head = insert;
    if (tail == null) {
        tail = insert;
    }
    size++;
    System.out.println("Adding at head: " + element);
}

// Add element at end
@SuppressWarnings("unchecked")
public void insertTail(T element) {

    NodeUMUC<T> insert = new NodeUMUC<>(element, null, tail);
    if (tail != null) {
        tail.setNextNode(insert);
    }
    tail = insert;
    if (head == null) {
        head = insert;
    }
    size++;
    System.out.println("Adding at tail: " + element);
}


@SuppressWarnings("unchecked")
public T removeElementAt(int position) {

    return null;
}


// Remove element from end
@SuppressWarnings("unchecked")
public T removeTail() {
    if (size == 0) {
        System.out.println("Empty List");
    }
    NodeUMUC<T> reference = tail;
    tail = tail.getPrevNode();
    tail.setNextNode(null);
    size--;
    System.out.println("Removing from tail: " + reference.getElement());
    return reference.getElement();
}

public T peekElementAt(int n) {

    return null;
}

// Display the element at begining
public T peekHead() {

    @SuppressWarnings("unchecked")
    NodeUMUC<T> reference = head;

    try {
        System.out.println("Peeking head: " + reference.getElement());
    } catch (NullPointerException x) {
        System.out.println("Empty List");
    }
    return reference.getElement();
}

// Display the element at end
public T peekTail() {

    @SuppressWarnings("unchecked")
    NodeUMUC<T> reference = tail;
    try {
        System.out.println("Peeking tail: " + reference.getElement());
    } catch (NullPointerException x) {
        System.out.println("Empty List");
    }
    return reference.getElement();
}

// Display all items in the linked list
@Override
public String toString() {
    NodeUMUC<T> print = head;
    StringBuilder sb = new StringBuilder();
    //System.out.print("Items in List: ");
    while (print != null) {
        sb.append(print.getElement());
       // sb.append(print.getElement());
        System.out.print(print.getElement() + " ");
        print = print.getNextNode();
    }
    System.out.println();
    return sb.toString();
}

public static void main(String a[]) {
    //create object
    LinkedListUMUC<Integer> list = new LinkedListUMUC<>();

    //call methods for manipulation
    System.out.println("List Empty: " + list.isEmpty());
    list.insertHead(14);
    list.insertHead(25);
    list.insertHead(67);
    list.insertHead(98);
    list.peekTail();
    list.peekHead();
    list.toString();
    list.insertTail(2);
    list.toString();
    System.out.println("Size of List: " + list.size());
    list.removeTail();
    list.toString();
    System.out.println("Size of List: " + list.size());
    System.out.println("List Empty: " + list.isEmpty());

} // End Main
} // End LinkedListUMUC<T>

最佳答案

这不符合你的逻辑;没关系。只是 list.toString()main 方法中没有执行任何操作:您忘记了打印返回的值。

顺便说一句,如果 toString 在相邻元素之间插入逗号会更清楚。

关于java - ToString StringBuilder 不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33597348/

相关文章:

java - 我的对象 boolean 值在程序不执行任何操作的情况下发生了变化

java - 了解 Java 和泛型数组

Java——从标准输入读取,一次一个字符

java - setVisibility 从 View.GONE 状态到 View.VISIBLE 无法正常工作

java.io.EOFException : Unexpected end of ZLIB input stream - reading from HTTP

java - 如何删除所有 View 并重新添加?

java - 如何从 servlet 转发到位于单独包中的另一个 servlet?

java - 将 Portlet 部署自动化到 WebSphere Portal Server 6.1

java - 如何并排打印两个二维数组?

java - Android 中的 Http cookie 存储