/*
Datei............: Aufg1105.java
Projekt..........: Einführung in die Java-Programmierung
Erstellt.........: 19.11.97, Guido Krüger
Geändert.........: --
Aufgabe..........: Musterlösung zu Aufgabe 11.05
Kommentare.......:

Die Aufgabe wird in die beiden Teilprobleme "Ausgeben eines
ganzen Satzes in der B-Sprache" und "Ausgeben eines einzelnen
Worts in der B-Sprache" zerlegt, die durch die Methoden
bSentence und bWord realisiert werden.

Während bSentence mit Hilfe eines StringTokenizers lediglich
alle Worte aus dem Satz extrahiert, nacheinander an bWord
übergibt und aus den Rückgabewerten das Ergebnis konstruiert,
ist die Implementierung von bWord etwas aufwendiger.

Die Methode durchläuft den übergebenen String zeichenweise
und unterscheidet bei jedem Buchstaben, ob es sich um einen
Vokal oder Konsonanten handelt. Dazu wird der konstante String
VOWELS verwendet, der zur Vereinfachung der Suche eine Liste 
aller Vokale enthält. Jede zusammenhängende Folge von Vokalen
wird in die Variable vowelbuf eingetragen und zusammen mit einem
angehängten "b" und seiner eigenen Wiederholung beim nächsten
Konsonanten bzw. nach dem Wortende ausgegeben.
*/
import java.util.*;

public class Aufg1105
{
  static final String VOWELS = "AaEeIiOoUuÄäÖöÜü";

  public static void main(String args[])
  {
	String s = "Meine Mutter ißt gerne Fisch";
	System.out.println(s);
	System.out.println(bSentence(s));
	System.out.println();

	s = "Hurra, es funktioniert, hurra!";
	System.out.println(s);
	System.out.println(bSentence(s));
	System.out.println();

	s = "Das ist die B-Sprache";
	System.out.println(s);
	System.out.println(bSentence(s));
	System.out.println();
  }

  public static String bSentence(String s)
  {
	StringTokenizer st = new StringTokenizer(s);
	String ret = "";
	while (st.hasMoreTokens()) {
	  ret += bWord(st.nextToken()) + " ";
	}
	return ret.trim();
  }

  public static String bWord(String s)
  {
	String ret = "";
	String vowelbuf = "";
	for (int i = 0; i < s.length(); ++i) {
	  char c = s.charAt(i);
	  if (VOWELS.indexOf(c) != -1) {
		vowelbuf += c;
	  } else {
		if (vowelbuf.length() > 0) {
		  ret += vowelbuf + "b" + vowelbuf + c;
		  vowelbuf = "";
		} else {
		  ret += c;
		}
	  }
	}
	if (vowelbuf.length() > 0) {
	  ret += vowelbuf + "b" + vowelbuf;
	}
	return ret;
  }
}

