Aufgabe: B-Sprachen-Spiel
Kinder spielen gerne das B-Sprachen-Spiel. Die B-Sprache funktioniert so, dass an jeden Vokal (a,e,i,o,u) eines Wortes ein b plus die Wiederholung des Vokals angefügt wird.
Schreiben Sie eine Methode namens spielen, die ein normales Wort entgegennimmt (Parameterdatentyp: String) und in ein Wort der B-Sprache übersetzt und dieses zurückgibt.
Beispiel:
übergebene Zeichenfolge: spiel mit mir zurückgelieferte Zeichenfolge: spibiebel mibit mibir
Hinweise:
Verwenden Sie zur Lösung der Aufgabe keine Methoden der Klasse String außer toCharArray() und String.valueOf()!
Vorgehensweise:
-
- Wandeln Sie den an die Methode übergebenen String mit toCharArray() in ein char-Array um!
-
- Ermitteln Sie, wie lang der zurückzugebende String sein muss und erzeugen Sie ein neues char-Array der entsprechenden Länge. Speichern Sie in diesem char-Array das Wort der B-Sprache.
-
- Wandeln Sie das neue char-Array mit String.valueOf() zurück in einen String um und geben Sie diesen zurück.
Meine Lösung:
import java.util.Scanner;
public class BUmwandeln {
public static String bEinsetzen(int vokallaenge, String vokale) {
char[] ausgabe = new char[vokallaenge];
char[] ausgabeTemp = new char[vokallaenge];
ausgabeTemp = vokale.toCharArray();
int ausgabenlaenge = bestimmenVonLaenge(vokallaenge, ausgabeTemp);
ausgabe = bUmwandeln(ausgabeTemp, ausgabenlaenge, vokallaenge);
String ausgabeSt = umwandelnVonSt(ausgabenlaenge, ausgabe);
return ausgabeSt;
}
public static String umwandelnVonSt(int ausgabenlaenge, char[] ausgabe) {
String ausgabeAlsString = "";
for (int i = 0; i < ausgabenlaenge; i++) {
ausgabeAlsString = ausgabeAlsString + String.valueOf(ausgabe[i]);
}
return ausgabeAlsString;
}
public static int bestimmenVonLaenge(int vokallaenge, char[] ausgabe) {
int ausgabenlaenge = vokallaenge;
for ( int i = 0; i < vokallaenge; i++) {
if (ausgabe[i] == 65 || ausgabe[i] == 97 || ausgabe[i] == 69 || ausgabe[i] == 101 || ausgabe[i] == 73 || ausgabe[i] == 105 || ausgabe[i] == 79 || ausgabe[i] == 111 || ausgabe[i] == 85 || ausgabe [i] == 117) {
ausgabenlaenge = ausgabenlaenge + 2;
}
} return ausgabenlaenge;
}
public static char[] bUmwandeln(char[] ausgabeTemp, int ausgabelaenge, int vokallaenge) { //
char[] ausgabe = new char[ausgabelaenge];
int x = -1;
for (int i = 0; i < vokallaenge; i++) {
x++;
ausgabe[x] = ausgabeTemp[i];
switch (ausgabe[x]) {
case 65:
ausgabe[x + 1] = 98;
ausgabe[x + 2] = 65;
x = x + 2;
break;
case 97:
ausgabe[x + 1] = 98;
ausgabe[x + 2] = 97;
x = x + 2;
break;
case 69:
ausgabe[x + 1] = 98;
ausgabe[x + 2] = 69;
x = x + 2;
break;
case 101:
ausgabe[x + 1] = 98;
ausgabe[x + 2] = 101;
x = x + 2;
break;
case 73:
ausgabe[x + 1] = 98;
ausgabe[x + 2] = 73;
x = x + 2;
break;
case 105:
ausgabe[x + 1] = 98;
ausgabe[x + 2] = 105;
x = x + 2;
break;
case 79:
ausgabe[x + 1] = 98;
ausgabe[x + 2] = 79;
x = x + 2;
break;
case 111:
ausgabe[x + 1] = 98;
ausgabe[x + 2] = 111;
x = x + 2;
break;
case 85:
ausgabe[x + 1] = 98;
ausgabe[x + 2] = 85;
x = x + 2;
break;
case 117:
ausgabe[x + 1] = 98;
ausgabe[x + 2] = 117;
x = x + 2;
break;
}
}
return ausgabe;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Geben Sie ein Wort mit vokalen ein!");
String vokale = scanner.nextLine(); //Das Wort, wo das BSpiel gemacht werden soll.
int vokallaenge = vokale.length();
System.out.println(bEinsetzen(vokallaenge, vokale));
scanner.close();
}
}
Geht es auch einfacher? Finde meine Lösung ziemlich komplex und nervig