001    package de.hska.java.aufgaben.felder;
002    
003    /**
004     * Erzeugt Passwörter aus den Endbuchstaben aller Teilwörter eines Satzes.
005     * <p>
006     *   <a href="http://www.home.hs-karlsruhe.de/~pach0003/informatik_1/aufgaben/felder.html#passwort_erzeugen">Zurück zum Aufgabentext</a>
007     * </p>
008     * 
009     * @author Christian Pape
010     */
011    public class PasswortGenerator {
012    
013            /**
014             * Gibt zum gegeben <code>satz</code> ein Passwort zurück, welches aus den
015             * Endbuchstaben der Wörter des Satzes gebildet wird. Alternierend wird bei
016             * Buchstaben zwischen Gross- und Kleinschreibung gewechselt. Der erste
017             * Buchstabe des Passworts wird gross geschrieben.
018             * </p>
019             * Als Wörter gelten alle durch ein oder mehrere Leerzeichen getrennte
020             * Folgen von Zeichen. "Wenn es regnet, dann wird es nass ." besteht aus den
021             * Teilwörtern "Wenn" "es" "regnet," "dann" "wird" "es" "nass" ".".
022             */
023            public String getPasswort(String satz) {
024                    String [] teilwoerter = satz.split(" +");
025                    String passwort = "";
026    
027                    boolean grossbuchstabe = true;
028                    for (String wort : teilwoerter) {
029                            char c = wort.charAt(wort.length() - 1);
030                            if ( Character.isLetter(c)) {
031                                    if (grossbuchstabe) {
032                                            c = Character.toUpperCase(c);
033                                            grossbuchstabe = false;
034                                    } else {
035                                            c = Character.toLowerCase(c);
036                                            grossbuchstabe = true;
037                                    }
038                            }
039                            passwort += c;
040                    }
041                    
042                    return passwort;
043            }
044    }