Java - Klammerpaare matchen

NoNamExTc

Mitglied
Hallo,

ich habe ein Aufgabe die ich leider nicht gelöst bekomme.

Ich sollte in der Schule die Logische Verknüpfungen in Java programmieren. Das war auch kein Problem jetzt sollen wir uns aber eine Möglichkeit ausdenken wie wir mit einem von einem User eingegebenen String den mit den Logische Verknüpfungen verarbeiten lassen. Ich habe mir gedacht das der User etwas nach dem Muster AND(true,true,false) eingeben soll und das Programm dann false zurückgibt.

Das habe ich auch hinbekommen... Aber jetzt das Problem, wenn jetzt der User AND(true,true,OR(true,false)) eingibt weiß ich nicht wie ich zuerst das OR und dann das AND bearbeiten kann.

Ein bekannter hat gemeint das würde man Klammerpaare matchen nennen aber darunter habe ich nichts gefunden.
Wenn mir dabei jemand helfen könnte wäre das echt SUPER =)

ps. Achso, das ist nicht mehr bestandteil der Hausaufgaben. Ich will es nur können da ich mich gerene mit sowas beschäftige ;)

LG
 
Zuletzt bearbeitet:
G

Gast2

Gast
Solche Ausdrücke kann man ganz gut als Baum aufspannen:

Code:
            AND
        /      |     \
    true     true    OR
                     /  \
                  true false

Und dann kannst du im Baum navigieren.
 

NoNamExTc

Mitglied
Das sieht ja gut aus :D
Aber leider wüsste ich auch nicht wie ich das so in Java umsetzen kann.

Bzw. mit welchen Funktionen mache ich das. Ich hatte es mit split, matchern, replace und so versucht bin aber nicht wirklich zu einem sinnvollen effekt gekommen :-(
 

Landei

Top Contributor
Wenn du AND(true,true,OR(true,false)) hast und auf das erste ( stößt, setzt du einen Zähler auf 1. Dann gehst du den String durch und zählst für jede ( eins hoch und für ) eins runter. Wenn du bei 0 bist, hast du die passende schließende Klammer gefunden. Dann wertest du alles zwischen den Klammern aus, und führst am Ende das AND auf den Ergebnissen aus.
 

Oben