Paarigkeit von Klammern mith. Stack

Status
Nicht offen für weitere Antworten.

89caro08

Neues Mitglied
hi!
ich habe folgendes Problem:
meine aufgabe ist es, ein programm zu schreiben das mithilfe eines stacks die paarigkeit von klammern prüft, indem es jedes zeichen eines teststrings prüft. ist das zeichen eine öffnende klammer, so wird es auf den stack abgelegt, ist es eine schließende, so wird das zeichen wieder entfernt.
das prinzip ist mir klar und ich habe auch einen ansatz, aber komme mit der umsetzung in java nicht klar...
public class Stack {

String stringArray[] = new String[1000]; //ich weiß nicht ob ich beide felder brauche, das obere ist in der aug.-
static String Stack[] = new String[1000]; //stellung gegeben, das andere nicht

public String pop(){
//nehme zeichen und setze es an oberste stelle des stacks
}

public void push(String s){
//entferne das zuletzt auf stack abgelegte element
}

public boolean empty(){ // fehlermeldung return-statement fehlt
for(int i=0;i<Stack.length;i++){
if(Stack==" "){
return true;
}else return false;
}
}
}

und:

public class StackTest {

static String testProgramm = "public class Main{ public static void main(String[] args){System.out.println(\"Hallo,Welt!\\n\");}}";

public static void main(String[] args){

for(int i=0; i<testProgramm.length(); i++){
push(testProgramm.charAt(i)); // fehlermeldung puch(char) undefined for type Stack Test

if(testProgramm.charAt(i) =="(" || "{" || "["){ // Incompatible operand types char and String
//push()...
}
if(testProgramm.charAt(i) ==")" || "}" || "]") // Incompatible operand types char and String
// pop()...
}
}
}

ist mein bisheriger ansatz.

wäre supi wenn mir schnell jemand helfen könnte :shock:
 
S

SlaterB

Gast
> public String pop(){
> //nehme zeichen und setze es an oberste stelle des stacks
> }

> public void push(String s){
> //entferne das zuletzt auf stack abgelegte element
> }

Kommentare genau falsch rum,

> push(testProgramm.charAt(i)); // fehlermeldung puch(char) undefined for type Stack Test

entweder du baust deinen Stack auf char um, was gar nicht so schlecht wäre, falls du immer nur einzelne Zeichen hast,
oder du wandelst den char von charAt in String um,
hast du dazu keine Idee?..

> if(testProgramm.charAt(i) =="(" || "{" || "[")

da du hier schon zum zweiten Mal 'testProgramm.charAt(i)' hast,
sollte dir als aller erstes auffallen, dass man das nicht zweimal schreibt,
lege dir eine Variable an
char c = testProgramm.charAt(i);
dann musst du nur noch mit c hantieren,

c ist ein char, ein char kannst du nicht mit Strings vergleichen,
Strings vergleicht man nicht mit == sondern mit equals,
für chars ist == dagegen gut, if (c == '(') ginge,

Hauptfehler: immer nur zwei Dinge vergleichen, nicht einen char mit einer Menge,
Java-Syntax?

-------

ansonsten fehlt ja noch ne Menge, das willst du hoffentlich nicht alles verraten bekommen haben

ein Tipp: du musst dir im Stack merken, wie viele Elemente du schon eingefügt hast
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben