Wie implementiere ich die Methode toString() für eine ArrayStack?
Möchte ich anzeigen, um eine Liste der Aufträge des Typs ArrayQueue <Order>
Die Klasse Order
hat eine ArrayStack<String>
als eines seiner Attribute. Ich überschrieb die toString()
Methode in der Klasse Order
, aber wie kann ich ihn außer Kraft setzen in der ArrayStack
Klasse? Denn das ist die Ausgabe die ich bekomme, wenn ich display:
OrderNumber Name Datum ArrayStack@481adc30
Was würde ich tun, um die Anzeige des Strings in ArrayStack richtig? Kann ich änderungen an der Klasse ArrayStack oder etwas ändern in meinem Display-Methode?
Dies ist mein Display-Methode:
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");
}
ArrayStack Klasse:
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 */
Order-Klasse:
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;
}
- Können Sie uns zeigen Ihre
toString()
Methode derOrder
Klasse. public String toString(){ return orderNumber + " " + customerName + " " + date + " " + items; }
- Warteschlange ist das Objekt vom Typ
ArrayQueue <Order>
? - Warteschlange ist das Array in der
QueueArray()
Klasse einen generischen Typ. - Also die Werte von
orderNumber
,customerName
,date
sind korrekt gedruckt. Nur hast du ein problem mititems
? - Ja! Sie sind korrekt gedruckt, weil ich habe eine Methode toString() in der Klasse
Order
zeigt, dass die Array-Elemente als Strings. Aber was ist, wenn eines der Array-Elemente ist selbst ein Array? in meinem Fall dieitems
. Ich müsste irgendwie hinzufügentoString()
Methode, um das auch? aber wo sollte ich es hinzufügen? - Können Sie mir sagen, ArrayStack ist gebündelt in dem Paket?
- Implementiert habe ich es selbst. Ich will hinzufügen, die ArrayStack und Bestellungen Klassen auf meine Frage
- Sie müssen hinzufügen, toString zu ArrayStack < T > so wird es genannt, wenn in
public String toString(){ return orderNumber + " " + customerName + " " + date + " " + items; }
- Ich habe toString-Methode in ArrayStack in meiner Antwort.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie
override toString()
Methode inArrayStack
wie gezeigthere
. Dies wird Ihr problem lösen.int no = input.nextInt(); StackInterface <String> items = new ArrayStack<String>(no); for(int j= 1; j<= no; j++){ System.out.println("Enter item no: " + j ); String theItem = input.next(); items.push(theItem); } Order order1 = new Order (orderno, customername, real_date, items); orders.enqueue(order1);
push
Methode sowieenqueue
Methode.scan < top
zuscan<=top
und es funktioniert jetzt perfekt. Vielen, vielen Dank! 🙂Werden können, sollten Sie dies tun:
for (int i = 0; i < numberOfEntries; i++) { System.out.println(queue[(frontIndex + i) % queue.length]); }
Verwenden: