Exceptions bei push/pop in Stack

sh33p

Bekanntes Mitglied
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:



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:

ARadauer

Top Contributor
Wo steckt bitte der Fehler?
dort wo die Exception geworfen wurde.
Diese tritt auf wenn du auf einen index zugreifts der ausserhalb des arrays liegt.

Schau wo der Fehler geworfen wird. Wie groß genau dein array an der stelle ist und mit welchem index zu zugreifst.
 

ARadauer

Top Contributor
bzw mas machst du da überhaupt mit dem temp? Ist doch falsch.
Wenn dein Stack zu groß ist musst du ein neues array erstellen, umkopieren und dann dieses verwenden. das heißt aber nicht das du dann immer temp verwendest sondern zu lässt einfach dein array auf temp zeigen.

Ich würd das alles auch noch ein bissen einrücken und zusammenräumen, dann wirds klarer...
 

sh33p

Bekanntes Mitglied
ich möchte ja eben nicht über das array hinüber zugreifen,sondern,wenn es voll ist,alles in ein neues kopieren..in diesem dürfte ja keine exception auftreten,da es doppel so lang ist...

Java:
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();
}
 

ARadauer

Top Contributor
diesem dürfte ja keine exception auftreten
ok wenn es das aber trotzdem tut hast du einen fehler gemacht.
Also in der zeile wo der fehler fliegt vorher die länge das array und count ausgeben. Dann siehst du warum.


und einrücken!....
ach scheiß drauf, ich erbarme mich... moment....
 

ARadauer

Top Contributor
das kompilier ja nicht mal.... ich würd eine IDE verwenden...


ok...

Java:
if (count < a.length) {
         count++;
         a[count] = x;
}

count = 9 und length = 10 (dh 0 bis 9)
ins if... count++ somit ist count 10, und du greifst mit a[10] zu was natürlich fliegt... weil dein feld nur von 0 bis 9 geht...
da ist dein fehler... ich reparier dir das aber nicht
 

Final_Striker

Top Contributor
Du erstellst das größere Array erst wenn du es brauchst.

Java:
if(count > a.length)
{
       
   int[] temp = new int[a.length() * 2];
     
   for(int i = 0; i < a.length; i++)
   {
       temp[i] = a[i];
   }

   a = temp;
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Test auf Exceptions schreiben Java Basics - Anfänger-Themen 11
berserkerdq2 Habe zwei exceptions, welche ist ein Kommunikationsfehler und welche ein Ausgabefehler? Java Basics - Anfänger-Themen 4
julian112 Input/Output .gz bzw. .txt Datei Einlesen und Umgang mit Exceptions Java Basics - Anfänger-Themen 1
C Exceptions identifizieren Java Basics - Anfänger-Themen 5
A Exceptions mit objektreferenzen Java Basics - Anfänger-Themen 4
A Exceptions und methods Java Basics - Anfänger-Themen 2
A Cannot find symbol bei exceptions Java Basics - Anfänger-Themen 2
A Exceptions und Packages Java Basics - Anfänger-Themen 6
B JUnit / Exceptions/ try-catch Java Basics - Anfänger-Themen 6
X Exceptions Benutzereingaben Java Basics - Anfänger-Themen 4
F Exceptions in Interfaces Java Basics - Anfänger-Themen 4
F Mehrere Exceptions in einem Catch-Block abfangen Java Basics - Anfänger-Themen 12
L Exceptions und Konten Java Basics - Anfänger-Themen 21
D Frage zu Exceptions Java Basics - Anfänger-Themen 8
I Wie programmiert man Exceptions? Java Basics - Anfänger-Themen 4
N Unterschied zwischen Checked und Unchecked Exceptions Java Basics - Anfänger-Themen 12
C Erste Schritte Exceptions nicht verstanden Java Basics - Anfänger-Themen 2
J Fragen zu Exceptions Java Basics - Anfänger-Themen 24
T Exceptions - ausgeführte Zeilen Java Basics - Anfänger-Themen 4
J Exceptions Java Basics - Anfänger-Themen 69
C Exceptions Java Basics - Anfänger-Themen 8
C Exceptions Java Basics - Anfänger-Themen 6
A ArrayQueue mit Exceptions und Vererbung Java Basics - Anfänger-Themen 3
F Exceptions Java Basics - Anfänger-Themen 6
J Frage zum Thema Exceptions (Try/Catch) Java Basics - Anfänger-Themen 3
M "Exceptions abfragen" Java Basics - Anfänger-Themen 6
Farbenfroh Exceptions Anfänger - Finde Fehler nicht Java Basics - Anfänger-Themen 7
Z Catch & Exceptions Java Basics - Anfänger-Themen 4
N Compiler-Fehler Drei Exceptions in GUIHack für Dreiecke auf MoveButtons Java Basics - Anfänger-Themen 36
V Welche Exceptions müssen importiert werden? Java Basics - Anfänger-Themen 3
S Exceptions Java Basics - Anfänger-Themen 7
M Vererbung Problem Vererbung/Exceptions Java Basics - Anfänger-Themen 9
S Verschachtelte Exceptions - Übersicht verbessern Java Basics - Anfänger-Themen 2
J Eclipse Exceptions Java Basics - Anfänger-Themen 2
K Schleifen und Exceptions Java Basics - Anfänger-Themen 8
K Exceptions auslagern Java Basics - Anfänger-Themen 15
R NullPointer Exceptions Java Basics - Anfänger-Themen 3
F Erste Schritte Übung zu Exceptions Java Basics - Anfänger-Themen 24
R Exceptions (try/catch) Java Basics - Anfänger-Themen 63
H Int Exceptions Java Basics - Anfänger-Themen 12
M Exceptions per throws oder try Java Basics - Anfänger-Themen 4
M Compiler-Fehler Queue als ArrayList mit Exceptions Java Basics - Anfänger-Themen 3
T Exceptions in einer Klasse Java Basics - Anfänger-Themen 3
B Eigene Exceptions entwerfen Java Basics - Anfänger-Themen 3
H Methoden Überflüssige Exceptions Java Basics - Anfänger-Themen 20
C Exceptions Java Basics - Anfänger-Themen 14
1 While Schleife Exceptions Java Basics - Anfänger-Themen 6
I Erste Schritte Eigene Fehlermeldungen bei Exceptions Java Basics - Anfänger-Themen 19
D Frage zu Exceptions Java Basics - Anfänger-Themen 12
M Compiler-Fehler Exceptions lieber throwen oder direkt catchen? Java Basics - Anfänger-Themen 8
T Exceptions Java Basics - Anfänger-Themen 19
B Wie finde ich Exceptions? Java Basics - Anfänger-Themen 19
Dit_ Input/Output Alle Exceptions protokollieren Java Basics - Anfänger-Themen 9
T Exceptions Java Basics - Anfänger-Themen 12
J Standard Exceptions abfangen Java Basics - Anfänger-Themen 5
F Exceptions werfen oder catchen?? Java Basics - Anfänger-Themen 14
D Exceptions - Ausnahmebehandlung Java Basics - Anfänger-Themen 19
D Frage zu Exceptions und der import Anweisung Java Basics - Anfänger-Themen 12
J Paar Fragen zu Exceptions Java Basics - Anfänger-Themen 16
G Verständnisproblem: Exceptions Java Basics - Anfänger-Themen 17
C Exceptions beim Beenden Java Basics - Anfänger-Themen 2
C TimerTask und Exceptions Java Basics - Anfänger-Themen 5
E Klasse öffnen, mehrere Exceptions Java Basics - Anfänger-Themen 9
C Exceptions Java Basics - Anfänger-Themen 7
G 2 Exceptions in einer Methode Java Basics - Anfänger-Themen 3
firefexx Exceptions werfen Java Basics - Anfänger-Themen 5
0 Exceptions mehrfach fangbar? Java Basics - Anfänger-Themen 4
O Exceptions Java Basics - Anfänger-Themen 3
K Sinn eigener Exceptions Java Basics - Anfänger-Themen 11
H Diverse Exceptions - Troubleshooting Java Basics - Anfänger-Themen 3
J exceptions Java Basics - Anfänger-Themen 8
sc0p InterruptedExceptions und Exceptions - in Einem! Java Basics - Anfänger-Themen 5
M Frage zu Exceptions Java Basics - Anfänger-Themen 19
M Fragen zu Exceptions Java Basics - Anfänger-Themen 3
A Exception Verständnisfrage: Exceptions während, einer Statischenzuweisung abfangen Java Basics - Anfänger-Themen 10
D Exceptions werfen + beenden Java Basics - Anfänger-Themen 12
M Exceptions aus interface-Methoden Java Basics - Anfänger-Themen 2
S File.renameTo und Exceptions / Fehlermeldung Java Basics - Anfänger-Themen 2
B Exceptions in Liste sammeln? Java Basics - Anfänger-Themen 5
O Eigene Exceptions Java Basics - Anfänger-Themen 11
O "restliche" Exceptions fangen Java Basics - Anfänger-Themen 8
H [Stil] Exceptions in der Klasse behandeln oder throwen? Java Basics - Anfänger-Themen 62
T Problem beim Werfen und Fangen von Exceptions Java Basics - Anfänger-Themen 2
V Aktivitätsdiagramm / Exceptions Java Basics - Anfänger-Themen 5
V Exceptions Java Basics - Anfänger-Themen 6
K Frage zu Exceptions -> Logging Java Basics - Anfänger-Themen 6
M Eigene Fehlermeldung bei Exceptions? Java Basics - Anfänger-Themen 12
R JDom Exceptions Java Basics - Anfänger-Themen 4
R Datei einlesen mit Exceptions Java Basics - Anfänger-Themen 2
Daniel_L Verwendung von try und catch bei exceptions Java Basics - Anfänger-Themen 7
C Reflection Exceptions behandeln Java Basics - Anfänger-Themen 6
G Exceptions - spiegeln wir da nicht einen Spiegel im Spiegel? Java Basics - Anfänger-Themen 10
G Verschiedene Exceptions zu gleichem Block Java Basics - Anfänger-Themen 6
U Frage zu Exceptions Java Basics - Anfänger-Themen 5
mwildam Philosophiefrage zu Exceptions und Rückgabewerten Java Basics - Anfänger-Themen 6
D Static, final Objekte mit Exceptions im Konstruktor Java Basics - Anfänger-Themen 2
G Exceptions Java Basics - Anfänger-Themen 4
G ServerSocket: Exceptions und Timeout Probleme Java Basics - Anfänger-Themen 10
M Exceptions bei Textfeldern abfangen Java Basics - Anfänger-Themen 2
P Problem mit exceptions Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben