# Paarigkeit von Klammern mith. Stack



## 89caro08 (11. Jan 2009)

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:_


----------



## SlaterB (11. Jan 2009)

> 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


----------



## Landei (11. Jan 2009)

Darfst du nicht die Klasse java.util.Stack verwenden?


----------

