Ich bin echt schon am Verzweifeln was diese Klasse angeht.
Die Klasse simuliert einen Stack mit typischen Operationen wie Push,Top und Pop auf Basis eines Arrays.Nur mit folgender Besonderheit: Wenn das Array a voll ist, werden die Element in ein 2. Array (temp) kopiert,das doppelt so groß ist.
Problem:
Es hagelt eine ArrayIndexOutOfbOundsException. Wenn ich eine push folge von mehr als 10 mache und dann mit top lesen möchte,hagelt es diese Exception.
Wenn ich sie in der TestKlasse abfange, funktioniert es auch nicht.
Wo steckt bitte der Fehler? :bahnhof:
Die Klasse simuliert einen Stack mit typischen Operationen wie Push,Top und Pop auf Basis eines Arrays.Nur mit folgender Besonderheit: Wenn das Array a voll ist, werden die Element in ein 2. Array (temp) kopiert,das doppelt so groß ist.
Problem:
Es hagelt eine ArrayIndexOutOfbOundsException. Wenn ich eine push folge von mehr als 10 mache und dann mit top lesen möchte,hagelt es diese Exception.
Wenn ich sie in der TestKlasse abfange, funktioniert es auch nicht.
Wo steckt bitte der Fehler? :bahnhof:
Java:
public final class StackDYN {
private int count; // aktuelle Zahl der Elemente -1
private int[] a = new int[10]; // Ablageplatz fuer die Elemente
int[] temp = new int[a.length * 2];
// Invariante: -1 <= count <= 9
public StackDYN() { // Konstruktor, erzeugt den leeren Stapel
count = -1;
}
public void push(final int x) throws Exception { //Oberste Element drauflegen
if(count >= a.length){
// inhalt von a nach temp kopieren
for(int i = 0; i < a.length;i++){
temp[i] = a[i];
}
}
if (count < a.length) {
count++;
a[count] = x;
}
if(count < -1)
throw new Exception();
}
public int top(){
try{
if(count >= a.length)
return temp[count];
}catch(ArrayIndexOutofBoundsException e){
}return a[count];
}
public void pop() throws Exception{ // Oberste Element entfern
if (count >= 0)
count--;
if(count <-1)
throw new Exception();
}
}
Zuletzt bearbeitet von einem Moderator: