Hallo zusammen.
Ich sitze hier schon seit Stunden an einem eigentlich eher kleinen Problem, was ich einfach nicht gebacken bekomme. Wir sollen in einer Klasse prüfen, ob richtig geklammert wurde. Ein String wird also über eine Testklasse übergeben - soweit noch alles in Ordnung.
EIn typischer String ist zum Beispiel: "(2*(a+3)+b)*(a-b)+c"
Jetzt hab ich zunächst alle übrigen Zeichen entfernt, sodass nu noch die Klammern übrig bleiben.
Die replaceAll Funktion weiter unten will aber nicht funktionieren. Es kommt immer false raus.
Wäre sehr nett, wenn mir jemand hier mal weiterhelfen könnte. Dass der übrige Code nicht ganz effizient ist, soll jetzt hier keine Rolle spielen. Es geht nur um das replace Problem.
Ich sitze hier schon seit Stunden an einem eigentlich eher kleinen Problem, was ich einfach nicht gebacken bekomme. Wir sollen in einer Klasse prüfen, ob richtig geklammert wurde. Ein String wird also über eine Testklasse übergeben - soweit noch alles in Ordnung.
EIn typischer String ist zum Beispiel: "(2*(a+3)+b)*(a-b)+c"
Jetzt hab ich zunächst alle übrigen Zeichen entfernt, sodass nu noch die Klammern übrig bleiben.
Die replaceAll Funktion weiter unten will aber nicht funktionieren. Es kommt immer false raus.
Wäre sehr nett, wenn mir jemand hier mal weiterhelfen könnte. Dass der übrige Code nicht ganz effizient ist, soll jetzt hier keine Rolle spielen. Es geht nur um das replace Problem.
Java:
package kontrollstrukturen;
public class Text {
String zeichenkette;
String klammerAuf;
String klammerZu;
public Text(String s) {
zeichenkette = s;
klammerAuf = "(";
klammerZu = ")";
}
public Text(String s, String klammerAuf, String klammerZu) {
zeichenkette = s;
this.klammerAuf = klammerAuf;
this.klammerZu = klammerZu;
}
public boolean istKorrektGeklammert() {
int primer = 0;
int länge = zeichenkette.length() - 1;
String result = zeichenkette;
while (länge >= primer) {
if ((String.valueOf(result.charAt(primer)).equals(klammerAuf))
|| String.valueOf(result.charAt(primer)).equals(klammerZu)) {
primer++;
} else {
result = result.replace(String.valueOf(zeichenkette.charAt(primer)), "\0");
primer++;
}
}
// if ((result.startsWith(klammerZu) || result.endsWith(klammerAuf))) {
// return false;
// }
System.out.println(result);
return process(result);
}
public boolean process(String s) {
while (!s.isEmpty()) {
String f = s;
f = f.replaceAll("\\(\\)", "");
if (s.equals(f)) {
return false;
}
s = f;
}
return true;
}
}
// public int gibAnzahl(String s) {
//
// }