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 }