Ich versuche, einen Stack in eine Methode zu überführen und dann einen doppelten Duplikatstapel zu erstellen und das Duplikat zu manipulieren, um zu sehen, ob es sortiert ist. Ich habe alles versucht, was mir einfällt, aber wenn ich den Stapel vor dem Ausführen meiner isSorted-Methode drucke, wird er wie erwartet gedruckt. Wenn ich die Methode isSorted ausführe und den übergebenen Stapel drucke, ist dieser leer.Wenn ich einen vom Benutzer erstellten Stack an eine Methode übergebe, wird der übergebene Stack geändert
Bitte beachten Sie die folgenden Code-Block:
public static boolean isSorted(Stack<RailwayCar> parkingArea) {
Stack<RailwayCar> tempStack = parkingArea;
boolean isSorted = true;
while (!tempStack.isEmpty()) {
int tempValue = tempStack.pop().getSerialNumber();
if (!tempStack.isEmpty() && tempValue > tempStack.peek().getSerialNumber()) {
isSorted = false;
}
}
return isSorted;
}
Sie sind nicht eine temporäre Stapel zu schaffen. 'tempStack' und' parkingArea' zeigen auf das exakt gleiche Objekt, deshalb wird nach der Methode der ursprüngliche Stack geändert. Wenn Sie den Stapel kopieren möchten, müssen Sie jedes Element manuell in den neuen Stapel kopieren (oder verwenden Sie die Methode 'clone', die von' Vector' übernommen wurde). – BackSlash