如何为 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;
}
我想显示类型为 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;
}