Java: Buchstaben ersetzen?

Das Programm. - (Informatik, Java)

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');


KnusperPudding  21.03.2017, 15:10

Die replace Funktion ersätzt den ersten String 

nicht nur den ersten String aber sonst passt's.

asdfghj2  21.03.2017, 15:22
@KnusperPudding

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.

Woher ich das weiß:Studium / Ausbildung – Informatik-Studium / Mathematik-Studium / ITK-Ausbildung

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.