Stack SetValTop

Status
Nicht offen für weitere Antworten.
Also, ist jetzt ein bissel schwer zu erklären, aber ich hoffe ihr kommt ein wenig mit. Ich soll ein Stack in einem Stack entwickeln :) , dazu muss ich eine wie ein Stack behandelte Liste implementieren die in ihren Val Felder beinhaltet die ebenfalls wie ein Stack behandelt werden. Push und Pop funktionieren einwandfrei, bloß die SetValTop Funktion macht viele Probleme. Ich soll sie nicht mit der Push Funktion machen, und deshalb mir den Ablauf so ausgelegt:

1. zum letzten befüllten Feld springen mit dem Befehl Object kacheln[] = (Object[])bs.top();
2. dann eigentlich das gleiche wie in Push machen, da es ja eigentlich nichts anderes ist...

Aber so richtig will er das nicht machen, bzw. er fügt zwar etwas ein, aber wenn ich danach die Top Funktion die mir den obersten Eintrag anzeigen soll ausführe meldet er mir java.lang.ArrayIndexOutOfBoundsException: 2, was ja eigentlich bedeutet das ich bei einer Feldlänge von 2 aus dem Array raus laufe.

Hier der Code:
Code:
package Lists;

public class OptStack {
  
  public OptStack() {
	  
    this.zeigerfeld = 0; //Zeiger für das aktuelle Feld (tb)
    this.bs = new Stack(); //leeren Keller mit Stack konstruieren
    
  }
  
  public boolean isEmpty() { //leerer Stack Abfrage
    return bs.isEmpty();
  }
  
  public Object top() { // zum ersten (letzten)
	  Object kacheln[] = (Object[])bs.top();
      if (!bs.isEmpty())
    	  return kacheln[zeigerfeld]; //Rückgabe der ersten Kachel
      else {
    	  return null;
      }
  }
  
  public void setValTop (Object Val) { //Bearbeiten des ersten
	  if (!bs.isEmpty()) { //Wenn nicht leer
		  Object kacheln[] = (Object[])bs.top();
	      

		  if (zeigerfeld<(kacheln.length)) { //Fall: Ist noch mindestens eine Kachel frei
			  kacheln[zeigerfeld++] = Val; //füge in die nächst höhere Kachel den Inhalt ein
	          //System.out.println("Variable wurde eingefügt: " +Val); //Bestätigung
	      }
		  else { //Fall: Keine Kachel mehr frei
	          kacheln[kacheln.length-1] = Val;
	          zeigerfeld = kacheln.length-1;
	          bs.push(kacheln);
	          System.out.println("+++++ neues Bucket anlegen");
			  //kacheln[zeigerfeld] = Val; //füge in diese Kachel den Inhalt ein
	          //System.out.println("Variable wurde eingefügt: " +Val); //Bestätigung
	      }
     }
	 else
		 System.out.println ("setValTop: Keller ist leer."); //Fehlermeldung
  }

  public void push(Object Val) { //Einfügen
	
    if (bs.isEmpty()) { //Fall: Stack ist leer
      Object []kacheln = new Object [groesse]; //neue Kacheln anlegen
      kacheln[kacheln.length-1] = Val; //Val in das letzte Kachelfeld einsetzen
      zeigerfeld = kacheln.length-1; //Zeiger auf das letzte Feld setzen
      bs.push(kacheln); //in den Stack einfügen
      System.out.println("+++++ neues Bucket anlegen");
      
    }
    else {
      Object kacheln[] = (Object[])bs.top();
      

	  if (zeigerfeld<(kacheln.length)) { //Fall: Ist noch mindestens eine Kachel frei
		  kacheln[zeigerfeld++] = Val; //füge in die nächst höhere Kachel den Inhalt ein
          //System.out.println("Variable wurde eingefügt: " +Val); //Bestätigung
      }
	  else { //Fall: Keine Kachel mehr frei
          kacheln[kacheln.length-1] = Val;
          zeigerfeld = kacheln.length-1;
          bs.push(kacheln);
          System.out.println("+++++ neues Bucket anlegen");
		  //kacheln[zeigerfeld] = Val; //füge in diese Kachel den Inhalt ein
          //System.out.println("Variable wurde eingefügt: " +Val); //Bestätigung
      }
    }
  }
  
  public void pop () { //Löschen
    if (zeigerfeld >= 0) {
    	zeigerfeld++ ; //löschen
        System.out.println("+++++ leeres Bucket freigeben"); //Bestätigung
    }
    if (zeigerfeld == groesse-1 ) {
      bs.pop(); //Kacheln aus dem Stack nehmen
      zeigerfeld = 0;// Stack löschen
    }
          
  }
  
  public int groesse = 2; //Anzahl der maximal enthaltenen Kacheln
  private int zeigerfeld; //Zeiger auf das Inhaltsfeld (tb)
  private Stack bs; //als Keller verwaltete lineare Liste
}

Und einmal aus dem Testprogramm die Stelle die Fehler macht:

s.setValTop(new Integer(11)); //das macht er noch, hab ich nachgeprüft
System.out.println("top: " + s.top()); //ab hier Fehlermeldung
 

André Uhres

Top Contributor
Hätt da noch ne Frage: wie sieht die Methode "top" der Klasse Stack aus? Bei java.util.Stack gibt's die ja net:
Code:
class Stack extends java.util.Stack{
    public Object[] top() {
        return null;//???
    }
}
 
Ach du keine Ahnung, die Klasse Stack wurde uns in einer jar Datei gegeben, also kann ich die weder öffnen noch bearbeiten. Wir dürfen davon ja auch keine Unterklasse bilden.
 

Marco13

Top Contributor
Ich gehe davon aus, dass "top" einfach das oberste Element liefert.

Eigentlich würde man ja sagen, dass man setValTop implementieren kann als
Code:
public void setValTop(Object val)
{
    pop();
    push(val);
}
Aber wenn du push nicht verwenden darfst... Im Moment sieht es aus, als würdest du NUR ein push machen (nicht direkt den Aufruf, aber den gleichen code). Es ist definitiv ein Unterschied zwischen setValTop und push: Bei setValTop wird der Stack nicht vergrößert! Du solltest dort (soweit ich das nachvollziehen konnte) also NICHT
zeigerfeld++
oder
bs.push(kacheln);
aufrufen (müssen)

Es KÖNNTE sein, dass sowas schon reichen würde....:
Code:
public void setValTop (Object Val) { //Bearbeiten des ersten
     if (!bs.isEmpty()) { //Wenn nicht leer
        Object kacheln[] = (Object[])bs.top();
        kacheln[zeigerfeld] = Val; //füge in die oberste Kachel den Inhalt ein
        System.out.println("Variable wurde eingefügt: " +Val); //Bestätigung
     }
    else
       System.out.println ("setValTop: Keller ist leer."); //Fehlermeldung
  }
 
Jetzt geht er schon weiter, bloß meine Top Funktion macht immer noch Schwierigkeiten. Anscheinend meckert er an der Variable zeigerfeld rum, denn genau diese Zeile wird in der Fehlermeldung angezeigt wenn ich nach einem Löschen diese Funktion aufführe. Aber leider funktioniert das Debugen nicht bei mir, irgendwie kommt dann die Fehlermeldung: Can not connect to VM , so dass ich die Variable nicht überprüfen kann.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A stack Java Basics - Anfänger-Themen 14
Proxy Stack erweitern mit neuem Array falls der alte voll ist!? Java Basics - Anfänger-Themen 5
V Ist Off-Heap-Speicher dasselbe wie Stack-Speicher? Java Basics - Anfänger-Themen 2
izoards Stack... Java Basics - Anfänger-Themen 17
Csircc Rekursive Methode Stack Overflow Java Basics - Anfänger-Themen 10
B Zahlenfolge von Queue in Stack Java Basics - Anfänger-Themen 29
L Stack bilden, push und pop Java Basics - Anfänger-Themen 16
KogoroMori21 Stack und Heap Speicher Java Basics - Anfänger-Themen 1
G Stack und Queue Arbeitsblatt Java Basics - Anfänger-Themen 3
G Stack programmieren Java Basics - Anfänger-Themen 6
Z Datentypen Stack based calculator Java Basics - Anfänger-Themen 8
F speicherort stack oder heap Java Basics - Anfänger-Themen 1
S Rekursiven Stack Java Basics - Anfänger-Themen 6
Curtis_MC Collections Zufälliges Element aus Stack Java Basics - Anfänger-Themen 2
D Queue vs. Stack Java Basics - Anfänger-Themen 6
P Stack, Heap Java Basics - Anfänger-Themen 13
D Erste Schritte Stack im Rollenspiel Java Basics - Anfänger-Themen 76
J Stack mit Benutzereingabe Java Basics - Anfänger-Themen 17
J Liste,Queue,Stack sortieren Java Basics - Anfänger-Themen 2
C Stack und Queue in Aktion (Bitte Hilfe für die Klausur) Java Basics - Anfänger-Themen 7
S Sequenz von Zahlen bei einem Stack möglich oder nicht möglich? Java Basics - Anfänger-Themen 5
E Stack vs Queue - Gemeinsamkeiten / Unterschiede Java Basics - Anfänger-Themen 7
C Laufzeit von Stack Operation Java Basics - Anfänger-Themen 5
4 Stack over flow bei rekursiver Tiefensuche Java Basics - Anfänger-Themen 5
J Quicksort mit Stack Java Basics - Anfänger-Themen 4
A Anzahl der Elemente in einem Stack wiedergeben Java Basics - Anfänger-Themen 3
T Stack Overflow - Rekursive Fibonacci Java Basics - Anfänger-Themen 10
K Tiefen- und Breitensuche beim Baum durch Stack und Warteschlange Java Basics - Anfänger-Themen 1
L Liste mittels Stack implementieren Java Basics - Anfänger-Themen 0
A Stack programmieren -> Unklarheiten Java Basics - Anfänger-Themen 1
C Stack - listenbasierte Implementierung Java Basics - Anfänger-Themen 4
L Mit rekursiven Aufrufen einen Stack emulieren Java Basics - Anfänger-Themen 1
T Frage zu Java Stack Java Basics - Anfänger-Themen 5
D Stack-Objekt - LIFO - wait(); notify(); Java Basics - Anfänger-Themen 0
J Array von Objekten, wie schauts im Heap / Stack aus ? Java Basics - Anfänger-Themen 7
M Frage zu Stack und Heap Java Basics - Anfänger-Themen 1
Farbenfroh Suche Übungsaufgaben: BinaryTree, Stack Java Basics - Anfänger-Themen 0
D Aufgabe: Stack mit Iterator Java Basics - Anfänger-Themen 8
X Stack mit Oberklasse, wieso funktioniert es nicht? Java Basics - Anfänger-Themen 8
B Stack/Heap Frage Java Basics - Anfänger-Themen 36
K Probleme mit stack Java Basics - Anfänger-Themen 7
K Wofür wird heute noch die Stack Klasse in Java genutzt Java Basics - Anfänger-Themen 4
F Rekursion Tiefensuch-Problem - Stack Overflow Java Basics - Anfänger-Themen 9
P LinkedList - Stack ... grundlegende Frage Java Basics - Anfänger-Themen 5
B Stack in eine verkettete Liste pushen Java Basics - Anfänger-Themen 4
J OOP Warum braucht man den Stack Java Basics - Anfänger-Themen 3
B Queue mit Daten aus einem Stack füllen Java Basics - Anfänger-Themen 21
G Stack invertieren Java Basics - Anfänger-Themen 3
H Pseudo-Stack (char[] stackArray) mit Zeichen aus einer .txt-Datei befüllen Java Basics - Anfänger-Themen 5
S Stack Problem mit Objekt Java Basics - Anfänger-Themen 2
X String mit String von Objekt im Stack vergleichen? Java Basics - Anfänger-Themen 14
D Stack auslesen mit pop Java Basics - Anfänger-Themen 2
S Stack als verkettete liste/ toString methode Java Basics - Anfänger-Themen 3
S Exceptions bei push/pop in Stack Java Basics - Anfänger-Themen 8
S Eigene Stack Klasse Java Basics - Anfänger-Themen 26
S Stack: Klasseninvariante Java Basics - Anfänger-Themen 4
L OOP Wrapper Klassen - Stack-Aufgabe Java Basics - Anfänger-Themen 2
M Frage zu Stack Java Basics - Anfänger-Themen 3
D Problem mit Set, Stack und Random Java Basics - Anfänger-Themen 2
O Stack Implementierung als verkettete Liste Java Basics - Anfänger-Themen 8
T Probleme bei einen Stack der über drei Dateien funktionieren soll Java Basics - Anfänger-Themen 5
V java.util.Stack Java Basics - Anfänger-Themen 9
K Stack und immer gleiches Objekt Java Basics - Anfänger-Themen 11
kulturfenster Stack / Queue Implementationen Java Basics - Anfänger-Themen 11
S Stack einlesen. Java Basics - Anfänger-Themen 2
E Stack kann nicht implimentiert werden Java Basics - Anfänger-Themen 11
E Eigene Stack Klasse schreiben Java Basics - Anfänger-Themen 12
J Stack Java Basics - Anfänger-Themen 3
K min-int-Wert in'nem Stack Java Basics - Anfänger-Themen 8
L Stack UpnRechner Java Basics - Anfänger-Themen 4
B Stack mit Bildern füllen Java Basics - Anfänger-Themen 2
B Stack mit Strings in zufälliger Reihenfolge füllen Java Basics - Anfänger-Themen 4
J Stack, der Integer-Zahlen enthält Java Basics - Anfänger-Themen 3
K Array Stack Java Basics - Anfänger-Themen 6
O Stack-Klasse Java Basics - Anfänger-Themen 7
S Stack mit Arrays Java Basics - Anfänger-Themen 3
T generischer stack Java Basics - Anfänger-Themen 3
Z Keller/Stack Problem Java Basics - Anfänger-Themen 11
H Stack und Queue Java Basics - Anfänger-Themen 6
G Die Klasse Stack selber schreiben. Java Basics - Anfänger-Themen 2
F Klammertest mit Stack implementieren Java Basics - Anfänger-Themen 5
X Stack Java Basics - Anfänger-Themen 14
J Morgen Java-Klausur. Stack, Heap, Method-Area Java Basics - Anfänger-Themen 2
H Unterschied zwischen Stack und Array Java Basics - Anfänger-Themen 3
F MergeSort iterativ mit Hilfe von Stack Java Basics - Anfänger-Themen 5
S stack Java Basics - Anfänger-Themen 3
S Stack invertieren Java Basics - Anfänger-Themen 14
S Stack-Operationen Java Basics - Anfänger-Themen 59
S Stack.pop() wie genau funktioniert das? Java Basics - Anfänger-Themen 3
A Stack, Frage zur Methode push Java Basics - Anfänger-Themen 4
C Anzahl der Elemente auf einem Stack Java Basics - Anfänger-Themen 4
D Stack chaos Java Basics - Anfänger-Themen 2
megachucky kleines problem mit nem STACK Java Basics - Anfänger-Themen 8
I Stack ist auf einmal empty Java Basics - Anfänger-Themen 3
R Beispiele für Stack & Visualisierung Java Basics - Anfänger-Themen 2
R Stack: Wieso funktioiert das? Java Basics - Anfänger-Themen 2
B eine kleine leichte aufgabe mit einem stack programmieren Java Basics - Anfänger-Themen 2
N Stack-Probleme Java Basics - Anfänger-Themen 2
K Stack Overflow Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben