"i" von "ie" unterscheiden

Adi18

Mitglied
Hallo liebe Leute

Ich soll eine Programm schreiben, indem der User ein beliebiges Wort eingibt, welches die Vokale: ( a,e,i,o,u ) und die Diphtongs: ( au,ie,ei ) um lew ersetzt. Hierzu wird jeder Vokal oder Diphtong um lew ergänzt, gefolgt von einer Wiederholung des Vokals/Diphtongs. So wird ein a zu alewa, ein u zu ulewu und ein au zu aulewau usw.

Beispiele:
User Eingabe: spielen
Ergebnis: spielewielelewen

User Eingabe: auto
Ergebnis: aulewautolewo

Ich Schaffe es leider nicht, dass das Programm zwischen au und a oder u unterscheidet. Genauso ist das Problem auch bei ie und ei.

Hier mein bisheriger Code:
import java.util.Scanner;

public class yaro {

public static void main(String[] args) {

Scanner adi = new Scanner(System.in);
String userEingabe = adi.next();

userEingabe = userEingabe.replace("au", "aulewau");
userEingabe = userEingabe.replace("ie", "ielewie");
userEingabe = userEingabe.replace("ei", "eilewei");
userEingabe = userEingabe.replace("a", "alewa");
userEingabe = userEingabe.replace("e", "elewe");
userEingabe = userEingabe.replace("i", "ilewi");
userEingabe = userEingabe.replace("o", "olewo");
userEingabe = userEingabe.replace("u", "ulewu");
System.out.println(userEingabe);

}
}
 

berndoa

Top Contributor
irgendiwe kann man, vorausgesetzt die Eingabe ist komplett als String da,
sicherlich immer einen 2 Zeichenblock betrachten und eins nahc rechts rücken.

Wobei ich mich gerade frage wie sowas wie Seieieieien verwertet werden würde.
Weil wenn man da so einen 3zeichenblock betrachtet sind sowohl die linken als auch die rechten 2 zeichen ein diphtong und müssten bearbeitet werden o_O

Grundsätzlich reicht es wohl aber auch aus, einfach zeichenweise zu gucken und nur, wenn das zeichen a,e oder i ist, erst auf das 2. zeichen zu warten um einen diphtong (dämliches wort) auszuschließen.
halt mit 2 variabeln agieren.
Edit:
strategischer: einen 2 zeichenblock betrachten, dessen linker indexwert bei 0 anfängt.
man guckt, ist der 2er block ein diphtong, falls ja entsprechende ersetzung an den ergebnisstring ran und 2 zeichen nach rechts hüpfen mit dem block.

ist der aktuelle 2blockberiech kein diphtong, dann wird das linke zeichen unverändert übernommen und der block wandert 1 nach rechts.

natürlich muss man als sonderfall dann die situation beachten wo wir den block nahc rechts vershcoben haben und nun nur noch links 1 zeichen oder auch gar kein zeichend runter ist.
im 1. falls linkes zeichen noch kopieren, dann sind wir fertig.
im 2.fall sind wir direkt fertig.

so in etwa mein umständliches vorgehen


Edit2:
Je nachdem wie sowas wie eieieie gehändelt werden soll, müsste oben bei finden eines diphtigns statt 2 stellen nahc rechts nur um 1 nahc rechts gegangen werden :)
:)
 
Zuletzt bearbeitet:

Adi18

Mitglied
irgendiwe kann man, vorausgesetzt die Eingabe ist komplett als String da,
sicherlich immer einen 2 Zeichenblock betrachten und eins nahc rechts rücken.

Wobei ich mich gerade frage wie sowas wie Seieieieien verwertet werden würde.
Weil wenn man da so einen 3zeichenblock betrachtet sind sowohl die linken als auch die rechten 2 zeichen ein diphtong und müssten bearbeitet werden o_O

Grundsätzlich reicht es wohl aber auch aus, einfach zeichenweise zu gucken und nur, wenn das zeichen a,e oder i ist, erst auf das 2. zeichen zu warten um einen diphtong (dämliches wort) auszuschließen.
halt mit 2 variabeln agieren.
Edit:
strategischer: einen 2 zeichenblock betrachten, dessen linker indexwert bei 0 anfängt.
man guckt, ist der 2er block ein diphtong, falls ja entsprechende ersetzung an den ergebnisstring ran und 2 zeichen nach rechts hüpfen mit dem block.

ist der aktuelle 2blockberiech kein diphtong, dann wird das linke zeichen unverändert übernommen und der block wandert 1 nach rechts.

natürlich muss man als sonderfall dann die situation beachten wo wir den block nahc rechts vershcoben haben und nun nur noch links 1 zeichen oder auch gar kein zeichend runter ist.
im 1. falls linkes zeichen noch kopieren, dann sind wir fertig.
im 2.fall sind wir direkt fertig.

so in etwa mein umständliches vorgehen


Edit2:
Je nachdem wie sowas wie eieieie gehändelt werden soll, müsste oben bei finden eines diphtigns statt 2 stellen nahc rechts nur um 1 nahc rechts gegangen werden :)
:)


Vielen Dank für Ihre Antwort. Verstehen tu ich die Idee, nur das umsetzten in Code ist das Problem ich weiß nicht wie das gehen soll.
 
G

Gelöschtes Mitglied 65838

Gast
mach halt einfach..und wenns nicht weiter geht dann frag hier nochmal

ne fertige lösung wird dir niemand geben .. weil du dann beim nächsten mal es wieder nicht kannst
 

KonradN

Super-Moderator
Mitarbeiter
nur das umsetzten in Code ist das Problem ich weiß nicht wie das gehen soll.
Der Ansatz ist immer gleich:
- Spiel den Algorithmuss im Kopf oder mit einem Blatt Papier und Stift durch. So stellst Du fest, ob Du den Algorithmus wirklich verstanden hast bzw. ob die Schritte genau genug beschrieben sind. Das ist dann also in der regel einfach ein Durchspielen, wie Du das Ersetzen selbst von Hand machen würdest.
- Dann formulierst Du es in Worten. Und zwar so genau, dass Jeder, der die Aufgabe nicht kennt, das dennoch durchführen kann.
- Diese Formulierung kannst Du dann 1:1 umsetzen. Sollte es bei einem Punkt nicht gehen, dann machst Du für diesen einen Punkt wieder genau diese Schritte.

Das Ergebnis ist dann, dass Du einen Code hast, der in der Regel auch direkt gut strukturiert ist, da Du eben auch mehrere Methoden eingeführt hast.

Wenn Du ganz am Anfang etwas geschrieben hast wie:
- Frage Anwender nach Wort und speiche dieses in der Variable originalWort

Dann ist das Code geworden in der Form:
String originalWort = frageAnwenderNachWort();

bzw (falls die Variable schon an anderer Stelle eingeführt wurde:
originalWort = frageAnwenderNachWort();

Divide and Conquer - teile die Aufgabe in Teilaufgaben auf und bearbeite diese Unabhängig voneinander.
 

Neue Themen


Oben