Java: Buchstaben ersetzen?
Ich soll ein Programm schreiben welches alle Vokale in einem Wort durch den Buchstaben "i" ersetzt nur kriege ich das nicht so richtig hin, kann mir jemand weiterhelfen??
3 Antworten
also... ich analysiere erstmal was du bisher machst...
String neu = "";
for(int i = 0; i <=laenge-1;i++) {
char b = wort.charAt(i)
}
System.out.println("Das neue Wort lautet"+neu);
also... in diesem Code-Teil definierst du die Variable neu mit einem leeren Wert.
Als nächstes kommt deine For-Schleife. Diese wird für jeden Buchstaben deines Wortes einmal durchlaufen und du erzeugst eine Variable b. Der Variable b wird der Buchstabe an der Stelle i (also der aktuelle Buchstabe) zugewiesen. Anschließend wird die Variable b wieder verworfen.
Und nach deiner Schleife wird "Das neue Wort lautet" mit der Variable neu ausgegeben. Die Variable neu ist dabei immer noch leer.
Anschließend kommt folgender Code:
System.out.println(wort.replace('a', 'i'));
System.out.println(wort.replace('e', 'i'));
System.out.println(wort.replace('i', 'i'));
System.out.println(wort.replace('o', 'i'));
System.out.println(wort.replace('u', 'i'));
Die replace Funktion ersätzt den ersten String durch den zweiten.
schreibst du also wort.replace('a', 'i'), dann wird jedes a in deinem String durch ein i ersetzt... das ist ja schonmal ein Schritt in die richtige richtung.
ABER: die replace Funktion verändert nicht die Variable wort selbst.
Willst du, dass sich das was replace macht auch auf dein Wort auswirkt, musst du den Rückgabewert von replace auch dem wort wieder zuweisen. Also so:
wort = wort.replace('a', 'i');
hm... ja ich habe mich nicht ganz korrekt ausgedrückt.
damit, dass replace den ersten string ersätzt meinte ich, dass replace zwei String parameter erwartet. Und alle Strings, und nach dem ersten Parameter wird gesucht und er wird durch den zweiten Parameter ersetzt
Innerhalb deiner Schleife fragst du mit einer if-Anweisung einfach ab, ob der Buchstabe an der stelle i (.charAt(i)) ein Vokal ist.
if ( wort.charAt(i) == 'a' || ...)
Wenn das der Fall ist, dann soll es ersetzt werden.
Das Vokal i muss natürlich nicht abgefragt werden, da das ja schon i ist.
ganz so falsch ist das gar nicht.
Du solltest jedoch deinen String: "wort" mit deiner neuen Änderung jedesmal aktualisieren, indem du den wert erneut zuweist:
neu = wort.replace('a', 'i'); neu = neu.replace('e', 'i');
Denn aktuell gibst du nur das einzelne Ergebnis aus: Also vom Ursprünglichen Wert, jeweils ein ersetzter Buchstabe.
PS: Groß- und Kleinschreibung spielt hier auch eine Rolle.
nicht nur den ersten String aber sonst passt's.