Okay, ich habe ein Programm zu erstellen, das if a Stack of CalendarDates is sorted or not.
Der Parameter bestimmt den Stapel verwendet:Java: Verwirrung mit Stapeln
CalendarDate[] store = {new CalendarDate(1,2), new CalendarDate(1,1), new CalendarDate(12,30)};
So it will return false as (1,1) comes after (1,2).
Anyways, hier ist mein Code:
public static boolean isSorted(Stack<CalendarDate> c){
Queue<CalendarDate> q = new LinkedList<CalendarDate>();
CalendarDate peek = c.peek();
while (!c.empty()){
CalendarDate peeker = c.peek();
if (peeker.compareTo(peek)>0){
return false;
}
else{
q.add(c.pop());
peek=peeker;
}
}
while (!q.isEmpty()){
c.push(q.remove());
}
while(!c.empty()){
q.add(c.pop());
}
while(!q.isEmpty()){
c.push(q.remove());
}
return true;
}
Der einzige Fehler, den ich bekomme, ist in der 3. Zeile, wo ich CalendarDate peek = c.peek(); Es ist eine "emptystackexception"
Warum erhalte ich diesen Fehler?
Sind Sie sicher, dass Ihr Stapel isn bist du leer? –
Weil der Stapel zu dieser Zeit leer war ... Sie haben wahrscheinlich einen leeren Stapel an die Funktion übergeben. –
Der Fehler ist sehr selbsterklärend. Überlege es nicht. – ChiefTwoPencils