Erste Schritte Vokale im Satz ersetzen

Vladyslav

Mitglied
Guten Tag,

ich stehe auf dem Schlauch (und Java ist ein Insel hilft mir gerade auch nicht besonders ).
Meine Aufgabe ist es in einem eingegebenem String alle Vokale also a e i o u durch durch ba be bi etc... zu ersetzen.
Soweit so gut. Dazu darf ich aber nur die Methoden toCharArray und String.ValueOf benutzen.

Ich komme einfach den markierten Zeile nicht weiter. Der Gedankengang ist, dass ich einen eingegebenen String erstmal in ein Char Array umwandle. Danach bestimme ich die Länge, erzeuge einen neuen Array der genauso lang sein soll.

Und jetzt steh ich auf dem Schlauch.
Ich soll den eigegebenen String Zeichen für Zeichen durchgehen und die besonderen Wörter im Array2 verändert speichern.
Zum Schluss gebe ich den veränderten String dann aus.

Code:
import java.util.Scanner;

public class L7UB4_B_Sprachen_Spiel {
    public static String spielen(String x)
    {



        char [] array = x.toCharArray();
        int leange =array.length;
        char [] array2 = new char [leange];

        for (int i = 0; i<leange;i++)  // von hier  xxxxxxxxxxxxxxxxxxxxxxxxxx
        {
            char c = x.charAt(i);



        }
        String str = String.valueOf(array2); // bis hier xxxxxxxxxxxxxxxxxxxx

        return str;
    }

    public static void main (String [] args)
    {
        String eingabe;
        String verarbeitung;
        Scanner scanner = new Scanner (System.in);

        System.out.println("Bitte gib hier ein Satz ein");
        eingabe = scanner.nextLine();

        verarbeitung = spielen(eingabe);

        System.out.println("Deine Eingabe in B-Sprache: "+verarbeitung);
    }
}


mfG
 

pkm

Bekanntes Mitglied
Hallo Vlady. Ich habe mal deinen Scanner ersetzt... Ansonsten würde ich es so lösen, dass ich eine Liste baue und beim Iterieren halt kucke, ob c ein Vokal ist. Wenn ja, hänge ich noch das b davor, ansonsten hänge ich nur den Kosonaten an den Result-String.

Java:
import java.util.Arrays;
import java.util.List;

public class L7UB4_B_Sprachen_Spiel {

    public static String spielen(String x) {

        char[] array = x.toCharArray();

        int leange = array.length;

        String str = "";

        // Ich bau mir eine Vokalliste
        List<String> vowels = Arrays.asList(
                new String[] { "a", "e", "i", "o", "u", "ä", "ö", "ü", "A", "E", "I", "O", "U", "Ä", "Ö", "Ü" });

        for (int i = 0; i < leange; i++) {

            char c = x.charAt(i);

            // Wenn c in dieser Liste drinne ist, dann hänge ich ein b und den Vokal an den
            // String str...
            if (vowels.contains(String.valueOf(c))) {

                str += "b";
                str += c;

            } else {

                // ansonsten hänge ich den Konsonanten an den String str.
                str += c;

            }

        }

        return str;
    }

    public static void main(String[] args) {

        String eingabe;
        String verarbeitung;

        eingabe = "Ich singe lustige Lieder";

        verarbeitung = spielen(eingabe);

        System.out.println("Deine Eingabe in B-Sprache: " + verarbeitung);
    }
}
 

Kirby.exe

Top Contributor
Java:
String a = "shahakdbuo";
System.out.println(a.replaceAll("a", "ba").replaceAll("e", "be").replaceAll("i", "bi").replaceAll("o", "bo").replaceAll("u", "bu"));

Edit: Ich hatte gerade gemerkt, dass du nur toCharArray und String.valueOf benutzen darfst, somit ist meine Lösung überflüssig.
 

Vladyslav

Mitglied
Danke erstemal an alle fürs helfen :) !
@ pkm, würde "List<String>" den nicht der Vorraussetzung widersprechen, dass alle Methoden der Klasse String außer toCharArray(), und String.vlueOf () verwendet werden dürfen ? Ansonsten ist deine Lösung toll ! Danke für die Kommentare hätte es sonst nicht verstanden. :)
 

pkm

Bekanntes Mitglied
Vlady, "contains" ist ja eine List-Methode und keine String Methode. An einem String-Objekt habe ich soweit ich weiß keine andere Methode aufgerufen als valueOf oder toCharArray.
 

temi

Top Contributor
Aber ansonsten sollte das doch kein Problem sein. Du wandelst den String in ein char-Array um. A e i o u sind chars. Einmal durch das Array durchgehen, chars vergleichen und entsprechend wieder einen String zusammenbauen. Fertig.
 

Vladyslav

Mitglied
Ich hab mich mal inspirieren lassen und es mal etwas anders versucht.
Ich weiß die Zeilen
resultat += 'b';
resultat += c;
gehen nicht auf, weil damit ja zwei Zeichen auf ein Char-Platz zwischengespeichert werden. Gibt es da vll. eine Lösung ?



Code:
public static String spielen(String x)
    {



        char [] array = x.toCharArray();
        int count = 0;
        int leange =array.length;
        char [] resultat = new char [leange];
        String str = "";

        for (int i = 0; i<leange;i++)
        {
            char c = x.charAt(i);
            if ( c == 'a' || c == 'e' ||c == 'i' ||c == 'o' ||c == 'u') {

                resultat[i] += 'b';
                resultat[i] += c;
            }
            else
            {
                resultat[i]=c;
        }

        }
        str = String.valueOf(resultat);

        return str;
    }
 
K

kneitzel

Gast
Also wenn Du vorher ermitteln könntest, die groß das Ziel-Array sein muss, dann könntest Du aus einem Zeichen ja zwei Zeichen machen....

Hilft Dir dieser Hinweis schon?
 

Vladyslav

Mitglied
@ JustNobody, verstehe ich es richtig ?

Also ich würde als erstes eine Methode schreiben der den eigegebenen Satz aufruft und die Vokale z.B. mit int Count = 0; Count ++; zählt .

Als nächstes habe ich eine Methode wie oben, die den eingegebenen String in ein Char Array umwandelt, dazu kommt aber noch der neue Wert von Count dazu ?
 
K

kneitzel

Gast
Du musst Dir die Lösung doch überlegen. Wenn du "abcdef" als String bekommst, dann ist der 6 Zeichen lang. Das Ergebnis soll aber nun "babcdbef" sein. Jetzt musst Du Dir überlegen, was für Mittel Du hast und was Du einsetzen willst.

Also wenn Du den Weg gehen willst: String -> char-array -> Zeichen in neues char-array kopieren -> String, dann musst Du für den Schritt, dass Du Zeichen in ein Ziel-Array kopieren willst, das Array mit der richtigen Größe anlegen.

Also brauchst Du zwei Dinge:
a) Du musst die Größe des Ziel-Arrays ermitteln können, entweder exakt oder vielleicht kannst Du eine Größe angeben, die auf jeden Fall reicht?
b) Du musst die Zeichen richtig kopieren können

Generell ist Dein Ansatz richtig: Das sind erst einmal zwei Schritte - die kannst Du nacheinander durchführen und wirklich einzeln angehen.

Wichtig ist immer, dass man irgend einen Tot sterben muss: Man kann die genaue Anzahl ermitteln und dann spart man Speicher. Oder man spart die Rechenzeit und nimmt einfach ein Array, in das es auf jeden Fall rein passt.

Dann ist nur die Frage, wie man das zu lange Array in einen String zurück bekommt. Wenn man sich die String Klasse anschaut, dann sieht man zwei valueOf Methoden, die ein Array von Chars annehmen. Die Zweite bekommt aber noch zusätzlich offset und count mit. :)
 

Vladyslav

Mitglied
@JustNobody habs mal versucht, habe aber ein Logic-Error drin. Das Programm startet ganz normal, der Debugger kommt auch durch, doch dann bricht es einfach ab ohne der Ausgabe der Lösung... bin grad 10 mal oder durchgegangen.




Code:
public class L7UB4_B_Sprachen_Spiel {
    public static int vokaleZaehler(String x) { // dise Methode zählt einfach nur die Vokale
        int count = 0;
        for (int i = 0; i < x.length(); i++) {
            char c = x.charAt(i);
            if ( c == 'a' || c == 'e' ||c == 'i' ||c == 'o' ||c == 'u'){
                count++;
            }
        }
        return count;
    }

    public static String spielen(String x)
    {
        int laenge = x.length();
        int grenzwert = laenge +1;
        char [] array = x.toCharArray();
        char [] resultat = new char [laenge+vokaleZaehler(x)];
        String str = "";

        for (int i = 0,j=0;i <=grenzwert;i++,j++)
        {

            if (array [i] == 'a' || array [i] == 'e' || array [i]=='i' || array [i]=='o' || array [i]=='u') {

                resultat[j] += 'b';
                j++;
                resultat[j] +=array[i];


            }
            else {
                resultat[j] = array[i];
            }


        }
        str = String.valueOf(resultat);

        return str;
    }

    public static void main (String [] args)
    {
        String eingabe;
        String verarbeitung;
        Scanner scanner = new Scanner (System.in);

        System.out.println("Bitte gib hier ein Satz ein");
        eingabe = scanner.nextLine();

        int counter = vokaleZaehler(eingabe);

        verarbeitung = spielen(eingabe);

        System.out.println("So viele böse Vokale :" +counter);

        System.out.println("Deine Eingabe in B-Sprache: "+verarbeitung);
    }
}
 

Vladyslav

Mitglied
Hatte die Bedienung in der Forschleife falsch gesetzt... naja Habs vielen DANK !
Code:
public class L7UB4_B_Sprachen_Spiel {
    public static int vokaleZaehler(String x) { // dise Methode zählt einfach nur die Vokale
        int count = 0;
        for (int i = 0; i < x.length(); i++) {
            char c = x.charAt(i);
            if ( c == 'a' || c == 'e' ||c == 'i' ||c == 'o' ||c == 'u'|| c == 'A' || c =='E' || c=='I' || c =='O'|| c=='U')
            {
                count++;
            }
        }
        return count;
    }

    public static String spielen(String x)
    {
        int laenge = x.length();
        char [] array = x.toCharArray();
        char [] charArrayResultat = new char [laenge+vokaleZaehler(x)];
        String str ="";

        for (int i = 0,j=0;i <laenge;i++,j++)
        {

            if (array [i] == 'a' || array [i] == 'e' || array [i]=='i' || array [i]=='o' || array [i]=='u'|| array [i] == 'A' || array [i]=='E' || array [i]=='I' || array [i]=='O'|| array [i]=='U') {

                charArrayResultat[j] += 'b';
                j++;
                charArrayResultat[j] +=array[i];


            }
            else {
                charArrayResultat[j] = array[i];
            }
            str = String.valueOf(charArrayResultat);


        }

        return str;
    }

    public static void main (String [] args)
    {
        String eingabe;
        String verarbeitung;
        Scanner scanner = new Scanner (System.in);

        System.out.println("Bitte gib hier ein Satz ein");
        eingabe = scanner.nextLine();

        int counter = vokaleZaehler(eingabe);
        verarbeitung = spielen(eingabe);

        System.out.println("So viele böse Vokale :" +counter);

        System.out.println("Deine Eingabe in B-Sprache: "+verarbeitung);
    }
}
 
Zuletzt bearbeitet:

temi

Top Contributor
Aber ansonsten sollte das doch kein Problem sein. Du wandelst den String in ein char-Array um. A e i o u sind chars. Einmal durch das Array durchgehen, chars vergleichen und entsprechend wieder einen String zusammenbauen. Fertig.
Man könnte doch schon in der Schleife den neuen String erstellen ;) Somit wäre das Array Problem gelöst xD
Java:
        String s = "shahakdbuo";

        char[] arr = s.toCharArray();

        String result = "";

        for(char c : arr) {
            if ( c == 'a' || c == 'e' ||c == 'i' ||c == 'o' ||c == 'u') {
                result += 'b';
            }

            result += c;
        }

        System.out.println(result);
 
Zuletzt bearbeitet:
K

kneitzel

Gast
Die Aufgabe habe ich aber explizit so verstanden, dass eben toCharArray und valueOf verwendet werden soll und jede anderweitige Benutzung von Strings explizit verboten ist.

Damit fällt diese Lösung doch aus.

Und @Vladyslav: An Deiner Lösung solltest Du noch etwas anpassen:
Java:
charArrayResultat[j] += 'b';
                j++;
                charArrayResultat[j] +=array[i];

Dieses += solltest Du durch = ersetzen. Es kommt zwar dennoch das Richtige raus, aber das liegt einfach nur daran, dass das Array mit 0 Werten gefüllt ist und daher immer 0 + ... gerechnet wird.

Aber wir wollen hier eine einfache Zuweisung und keine Addition.
 
K

kneitzel

Gast
Und weil wir ja schon zwei Lösungsideen hatten, einfach noch einmal die zweite Variante ohne Zählen 8Also Ziel-Array wird auf doppelte Größe gesetzt und dann werden nur die gesetzten Elemente beim valueOf berücksichtigt.:

Code:
public static String spielen(String x)
    {
        int laenge = x.length();
        char [] array = x.toCharArray();
        char [] charArrayResultat = new char [laenge * 2]; // Doppelte Länge ist das maximale, das wir brauchen (für den Fall, dass alles Vokale sind!)
        String str ="";
        
        int positionNeu=0;
        for (int positionAlt = 0; positionAlt < laenge; positionAlt++)
        {
            if (array [positionAlt] == 'a' || array [positionAlt] == 'e' || array [positionAlt]=='i' || array [positionAlt]=='o' || array [positionAlt]=='u'|| array [positionAlt] == 'A' || array [positionAlt]=='E' || array [positionAlt]=='I' || array [positionAlt]=='O'|| array [positionAlt]=='U') {
                charArrayResultat[positionNeu] += 'b';
                positionNeu++;
            }
            charArrayResultat[positionNeu] +=array[positionAlt];
            positionNeu++;
        }
        return String.valueOf(charArrayResultat, 0, positionNeu); // Nur die ersten positionNeu Elemente umwandeln.
    }

Das ist natürlich einfach so im Editor entstanden - also ggf. mit Tippfehlern oder so. Und evtl. ist beim Refactoring was übersehen worden und man hat noch ein i oder j irgendwo.

Und beim Schreiben ist noch aufgefallen:
In der Schleife musst Du kein String.valueOf aufrufen. So berechnest Du derzeit in jedem Durchlauf ein neues str. Aber Du musst es ja nur einmal nach der Schleife machen.
 

temi

Top Contributor
Die Aufgabe habe ich aber explizit so verstanden, dass eben toCharArray und valueOf verwendet werden soll und jede anderweitige Benutzung von Strings explizit verboten ist.
Kann sein. Kann aber auch sein, dass man nur keine andere Methode von String verwenden darf.

Das kann er ja dann selbst entscheiden, nachdem er selbst eine funktionierende Lösung hat, wollte ich einfach nur eine Alternative zeigen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Vokale auslesen in Satz Java Basics - Anfänger-Themen 7
P9cman Vokale in einem String überprüfen mittels Rekursion Java Basics - Anfänger-Themen 8
N Aus einem String die Anzahl der Vokale auslesen Java Basics - Anfänger-Themen 40
O Methode um Vokale zu entfernen UNSCHOEN! Java Basics - Anfänger-Themen 8
P vokale konsonanten ziffern satzzeichen aus string lesen. hab kiene ahnung Java Basics - Anfänger-Themen 10
H Erste Schritte String Vokale entfernen Java Basics - Anfänger-Themen 11
S Vokale Java Basics - Anfänger-Themen 11
S Vokale vorhanden?? Java Basics - Anfänger-Themen 2
S Vokale am Ende von Wörtern löschen Java Basics - Anfänger-Themen 7
J Vokale ersetzen Java Basics - Anfänger-Themen 7
R Vokale aus String entfernen Java Basics - Anfänger-Themen 11
C Löschen der Vokale Java Basics - Anfänger-Themen 20
A Satzeingabe - Vokale zählen Java Basics - Anfänger-Themen 5
A Vokale im String ersetzen Java Basics - Anfänger-Themen 12
T Rekursiv Vokale zählen Java Basics - Anfänger-Themen 19
T Wie ersetze ich Vokale? Java Basics - Anfänger-Themen 4
W Vokale aus String zählen Java Basics - Anfänger-Themen 19
U Kann man bei Java gleich mehrere Bedingungen prüfen in der If, aber in einem "Satz"? Java Basics - Anfänger-Themen 1
K mit String.splitt(",") ganzen Satz erhalten? Java Basics - Anfänger-Themen 3
Z Satz aufteilen und die Wörter zählen (HashMap) Java Basics - Anfänger-Themen 15
O Großbuchstaben im Satz zählen Java Basics - Anfänger-Themen 6
L Wertebereich if-Satz angeben (z.B: Benzinverbrauch 51 <=75<) Java Basics - Anfänger-Themen 1
U Primfaktorzerlegung m. kleinem Fermat-Satz Java Basics - Anfänger-Themen 4
C Stringeingabe: kein Satz wegen Leerzeichen möglich Java Basics - Anfänger-Themen 3
T Erste Schritte Eingelesenen Satz - Wörter und Leerzeichen getrennt in 2x Array's Java Basics - Anfänger-Themen 7
D Satz des Pythagoras Java Basics - Anfänger-Themen 30
H Satz abkürzen Java Basics - Anfänger-Themen 13
S Satz des Pythagoras Java Basics - Anfänger-Themen 9
S ein Satz aus einer Datei in eine andere Datei Speichern? Java Basics - Anfänger-Themen 5
B Satz Zufallszahlen ohne Wiederholung Java Basics - Anfänger-Themen 14
I Frage Thymeleaf -> Fehler ignorieren und mit "" ersetzen? Java Basics - Anfänger-Themen 15
A 1 Leerzeichen durch zwei Leerzeichen ersetzen Java Basics - Anfänger-Themen 4
A JTextArea entfernen und durch neuen Text ersetzen Java Basics - Anfänger-Themen 8
obiwanke Ziffern durch ASCII Character ersetzen Java Basics - Anfänger-Themen 8
C In String, Buchstaben ersetzen durch andere Buchstaben Java Basics - Anfänger-Themen 26
C if-Konstrukt durch switch-Konstrukt ersetzen Java Basics - Anfänger-Themen 14
W Best Practice Tabulatoren verschiedener Länge ersetzen Java Basics - Anfänger-Themen 8
I String ersetzen, der Inhalt enthält Java Basics - Anfänger-Themen 4
T Zahl in Array ersetzen Java Basics - Anfänger-Themen 2
D Input/Output fehlerhafter Algorithmus zum Ersetzen von Array-Werten nach logischem Schema Java Basics - Anfänger-Themen 1
N for Schleife durch Rekursion ersetzen Java Basics - Anfänger-Themen 6
B Alle Links in einem Text suchen und ersetzen mit einem neuen Link Java Basics - Anfänger-Themen 18
S Ersetzen eines Asterix in einem String Java Basics - Anfänger-Themen 8
ruutaiokwu Ausgegebene Zeile ersetzen mit neuem Text Java Basics - Anfänger-Themen 3
CptK Interface Curser durch Bild ersetzen & MouseListner Java Basics - Anfänger-Themen 2
S Wort suchen und ersetzen in einer Datei Java Basics - Anfänger-Themen 6
W Teilstring durch Teilstring mittels StringBuilder ersetzen Java Basics - Anfänger-Themen 7
J Kopierte Datei soll alte ersetzen. Java Basics - Anfänger-Themen 6
K BufferedReader für IOTools ersetzen? Java Basics - Anfänger-Themen 17
Jinnai4 Strings ersetzen Java Basics - Anfänger-Themen 9
G Wert in Textdatei ersetzen? Java Basics - Anfänger-Themen 2
C char in String suchen und durch anderen String ersetzen Java Basics - Anfänger-Themen 2
M 2 Stellen in einem Array vergleichen und bei übereinstimmen eine davon ersetzen Java Basics - Anfänger-Themen 1
F In LinkedList einen Wert ersetzen oder neu einfügen Java Basics - Anfänger-Themen 7
Alex/89 String in einer txt ersetzen Java Basics - Anfänger-Themen 15
B Greenscreen (grüner Hintergrund ersetzen mit Bild) Java Basics - Anfänger-Themen 49
E RTF/DOC(x) textteile ersetzen/verändern Java Basics - Anfänger-Themen 0
K ArrayList durch ArrayList ersetzen Java Basics - Anfänger-Themen 5
T Strings ersetzen mit \ Java Basics - Anfänger-Themen 10
A Suchen und ersetzen Java Basics - Anfänger-Themen 13
Lord.Djerun (Taschenrechner Netbeans) Komma nur einmal schreiben & 0 ersetzen Java Basics - Anfänger-Themen 1
A Text mit "Scanner" eingeben und Umlaute ersetzen Java Basics - Anfänger-Themen 7
hello_autumn Strings ersetzen... Java Basics - Anfänger-Themen 10
S Wort in Text suchen und ersetzen Java Basics - Anfänger-Themen 3
G Ersetzen eines confirm dialogs/ synchronisieren von methoden Java Basics - Anfänger-Themen 6
T Best Practice JUnit: Wie Klassen durch Stubs/Mockups ersetzen Java Basics - Anfänger-Themen 7
J Ersetzen Java Basics - Anfänger-Themen 4
Ananaskirsche Input/Output Platzhalter durch String in yml-Datein ersetzen Java Basics - Anfänger-Themen 5
AssELAss ß durch ss oder SS ersetzen Java Basics - Anfänger-Themen 10
J Input/Output String Suchen und Ersetzen Java Basics - Anfänger-Themen 8
M nach Typenkonvertierung Leerzeichen ersetzen Java Basics - Anfänger-Themen 2
G Line Separator in ArrayList durch ";" ersetzen Java Basics - Anfänger-Themen 4
L Wort in String ersetzen Java Basics - Anfänger-Themen 11
N Java Programm zum Suchen und Ersetzen von Text Dateien Java Basics - Anfänger-Themen 10
F Hexfolge in Byte Array ersetzen Java Basics - Anfänger-Themen 8
G GUI Label Werte ersetzen Java Basics - Anfänger-Themen 25
G String ersetzen Java Basics - Anfänger-Themen 5
G GUI JLabel ersetzen Java Basics - Anfänger-Themen 3
X String einzelne Buchstaben ersetzen Java Basics - Anfänger-Themen 4
C Variablen Variablen ersetzen Java Basics - Anfänger-Themen 7
Kenan89 Bestimmte Zeile in txt-Datei ersetzen Java Basics - Anfänger-Themen 4
D Slash durch zwei Backslash ersetzen Java Basics - Anfänger-Themen 11
S Button durch ImageIcon ersetzen Java Basics - Anfänger-Themen 9
C Elemente im StringBuffer ersetzen Java Basics - Anfänger-Themen 19
S im StringBuilder Zeichenketten ersetzen Java Basics - Anfänger-Themen 6
A String ersetzen Java Basics - Anfänger-Themen 6
B Char in String ersetzen Java Basics - Anfänger-Themen 15
J Alle Vorkommen eines chars in einem Array durch einen anderen char ersetzen Java Basics - Anfänger-Themen 10
I Ersetzen eines Objektes in einer Liste? Java Basics - Anfänger-Themen 5
A Datentypen Sonderzeichen / Strings ersetzen Java Basics - Anfänger-Themen 3
S Objekt durch Schnittstelle ersetzen Java Basics - Anfänger-Themen 2
F Substring mittels RegEx ermitteln/ersetzen? Java Basics - Anfänger-Themen 2
K Ersetzen von Teilstrings in ArrayList von Strings Java Basics - Anfänger-Themen 11
S Datentypen In mehreren Dateien Strings ersetzen Java Basics - Anfänger-Themen 14
A Doppelter Backslash durch einen einfachen Backslash ersetzen Java Basics - Anfänger-Themen 6
T Doppelte Anführungszeichen ersetzen?? Java Basics - Anfänger-Themen 4
B Vector in Table ersetzen Java Basics - Anfänger-Themen 4
J Große animierte Gif preloaden und solange mit einer nicht animierten ersetzen Java Basics - Anfänger-Themen 5
Daniel_L RegEx - Ersetzen ausschließen? Java Basics - Anfänger-Themen 6
S .txt einlesen->Zeilen ersetzen->neu.txt speichern Java Basics - Anfänger-Themen 13

Ähnliche Java Themen

Neue Themen


Oben