001    package de.hska.java.aufgaben.felder;
002    
003    /**
004     * Klammerung ist verantwortlich, eine Zeichenkette
005     * auf vollständige Klammerung mit '(' und ')' zu überprüfen.
006     * <p>
007     *   <a href="http://www.home.hs-karlsruhe.de/~pach0003/informatik_1/aufgaben/felder.html#klammern">Zurück zum Aufgabentext</a>
008     * </p>
009     * @author Christian Pape
010     *
011     */
012    public class Klammerung {
013    
014            /**
015             * Gibt genau dann true zurück, wenn die runden Klammern
016             * <code>zeichen</code> vollständig geklammert sind.
017             * Das heisst: zu jeder öffenden Klammer '(' gibt es eine
018             * schliessende Klammer ')' und diese Klammern sind korrekt
019             * verschachtelt. Alle anderen Zeichen außer den
020             * runden Klammern werden ignoriert.
021             * Wirft eine NullPointerException, falls zeichen null ist.
022             */
023            public boolean klammernPruefen(char [] zeichen) {
024                    int anzahlOffenerKlammern = 0;
025                    
026                    for (char c : zeichen) {
027                            if (c == '(') {
028                                    anzahlOffenerKlammern++;
029                            } else if (c == ')') {
030                                    anzahlOffenerKlammern--;
031                                    if (anzahlOffenerKlammern < 0) {
032                                            return false;
033                                    }
034                            }
035                    }
036                    
037                    return anzahlOffenerKlammern == 0;
038            }
039    }