如何为 ArrayStack 实现 toString() 方法?

How do I implement the toString() method for an ArrayStack?

我想显示类型为 ArrayQueue <Order> 的订单列表 class Order 有一个 ArrayStack<String> 作为它的属性之一。我在 class Order 中覆盖了 toString() 方法,但是如何在 ArrayStack class 中覆盖它?因为这是我显示时得到的输出:

订单号名称日期ArrayStack@481adc30

我需要做什么才能正确显示 ArrayStack 中的字符串?我是否更改 class ArrayStack 或更改我的 Display 方法中的某些内容?

这是我的显示方法:

 public void display(){
    if (!isEmpty())
    for (int i = 0; i < numberOfEntries; i++) {
        System.out.println(queue[(frontIndex + i) % queue.length]);
    }
    else System.out.println("You don't have any orders");
    }

阵列堆栈Class:

 public class ArrayStack < T > implements StackInterface < T >
{
    private T [] stack; // array of stack entries

    private int topIndex; // index of top entry

    private static final int DEFAULT_INITIAL_CAPACITY = 50;

    public ArrayStack ()
    {
        this (DEFAULT_INITIAL_CAPACITY);
    } // end default constructor


    public ArrayStack (int initialCapacity)
    {
        // the cast is safe because the new array contains null entries
        @ SuppressWarnings ("unchecked")
            T [] tempStack = (T []) new Object [initialCapacity];
        stack = tempStack;
        topIndex = -1;
    } // end constructor

    /*  Implementations of the stack operations */

订单Class:

   import java.util.Date;


public class Order {

    int orderNumber;
    String customerName;
    Date date;
    StackInterface <String> items;

Order( int number, String name, Date datum, StackInterface<String> item){
    orderNumber = number;
    customerName= name;
    date= datum;
    items = item;   
}

/Overriding toString() to Display a list of Orders as one String line. 
public String toString(){
    return orderNumber + " " + customerName + " " + date + " " + items;
}

也许你应该这样做:

System.out.println(Arrays.toString(queue.toArray()));

使用这个:

System.out.println(Arrays.toString(queue));

您可以 override toString() ArrayStack 中的方法,如 here 所示。这将解决您的问题。

public String toString() {
    String result = "";

    for (int scan = 0; scan < top; scan++)
        result = result + stack[scan].toString() + "\n";

    return result;
}