Vorkommen von Zeichen

Ich soll eine Ausgabe mit einer Methode vorkommen(String wort) generieren, die wiefolgt aussieht:
Input: OTTO als String

O : 2
T : 2
T : 2
O : 2

Über mögliche Lösungsvorschläge würde ich mich sehr freuen, danke im voraus.
 
Moin,

aha ... und was soll die Ausgabe darstellen (speziell die Ziffern) ??
Wie oft der jeweilige Buchstabe vorkommt?

Was habt ihr schion gelernt / dürft ihr nutzen ??

VG Klaus
 
Dann poste mal Deinen bisherigen Ansatz !!
Hier wird keiner Deine Hausaufgaben erledigen - zumal es Dir auch nicht bringen würde!!

Mal so als Tipp: lauf zeichenweise durch den String zun zähle dabei die vorkommenden Buchstaben !!

VG Klaus
 
mal davon abgesehen, dass es so nicht compilieren würde, da es nicht mal ansatzweise ein vollständiges (lauffähiges) Programm ist,
ist der Amsatz doch schon mal sehr schön!

Du hast also ein Char-Array mit den einzelnen Buchstaben des eingegebenen Wortes!
Und ein Schleife, um jedes Element des Arrays (jeden einzelnen Buchstaben) auszugeben!

Dabei könntest Du jetzt doch die Vorkommen zählen und anschließend ausgeben!
VG Klaus
 
mal davon abgesehen, dass es so nicht compilieren würde, da es nicht mal ansatzweise ein vollständiges (lauffähiges) Programm ist,
ist der Amsatz doch schon mal sehr schön!

Du hast also ein Char-Array mit den einzelnen Buchstaben des eingegebenen Wortes!
Und ein Schleife, um jedes Element des Arrays (jeden einzelnen Buchstaben) auszugeben!

Dabei könntest Du jetzt doch die Vorkommen zählen und anschließend ausgeben!
VG Klaus
und wie zähle ich die vorkommenden Zeichen?
 
public class testa4 {



public static void main(String[] args) {



String wort = readString("Bitte ein Wort eingeben");

vorkommen(wort);



}

public static void vorkommen (String wort) {

int [] array = new int [256];

char[] zeichen = wort.toCharArray();

int count =0;





for (int i = 0; i<wort.length(); i++) {







System.out.println(zeichen );

}



//System.out.println(zeichen + ":"+ count );

}



}
 
@Javauser19000 bearbeite mal bitte Deinen Kommentar und füge vor dem Code [code=Java] und nach dem Code [/code] ein. Sonst ist der Code erstens unleserlich und zweitens werden bestimmte Zeichen nicht angezeigt.
 
Java:
[B]public[/B] [B]class[/B] testa4 {



    [B]public[/B] [B]static[/B] [B]void[/B] main(String[] args) {

      

        String wort = [I]readString[/I]("Bitte ein Wort eingeben");

        [I]vorkommen[/I](wort);



    }

    [B]public[/B] [B]static[/B] [B]void[/B] vorkommen (String wort) {

        [B]int[/B] [] array = [B]new[/B] [B]int[/B] [256];

            [B]char[/B][] zeichen = wort.toCharArray();

            [B]int[/B] count =0;

          

          

            [B]for[/B] ([B]int[/B] i = 0; i<wort.length(); i++) {

              

                  

                      

                        System.[B][I]out[/I][/B].println(zeichen[I] );

                    }

               

                //System.out.println(zeichen[I] + ":"+ count );

            }
[/I][/I]
 
Nochmal kompakt ohne die Formatierungszeichen:
Java:
public class testa4 {
    public static void main(String[] args) {
        String wort = readString("Bitte ein Wort eingeben");
        vorkommen(wort);
    }   

    public static void vorkommen (String wort) { 
        int [] array = new int [256];
        char[] zeichen = wort.toCharArray();
        int count =0;

        for (int i = 0; i<wort.length(); i++) {
            System.out.println(zeichen[i]);
        }
        //System.out.println(zeichen[i] + ":"+ count );
    }
}

Die readString-Methode existiert hier (noch) nicht, vielleicht hast Du die aber auch statisch importiert.
 
ich habe eine Libor in dem Projekt, daher kann ich eine. String über die Konsole eingeben, der Fehler liegt irgendwo in der Methode vorkommen. Wenn ich Otto eingebe kommt
O
t
t
o

daher muss der Ansatz richtig sein, nur weiß ich nicht wie ich das Aufzählen richtig im code schreiben Sol,l
 
Ok, mal eine "Teilaufgabe":

Java:
public class testa4 {
    public static void main(String[] args) {
        String wort = readString("Bitte ein Wort eingeben");
        String buchstabe = readString("Bitte einen Buchstaben eingeben");
        vorkommen(wort, buchstabe.charAt(0));
    }  


    // Methode soll ausgeben, wie oft das Zeichen buchstabe im Wort vorkommt
    public static void vorkommen(String work, char buchstabe) {
        char[] zeichen = wort.toCharArray();
        int count =0;
        for (int i = 0; i<wort.length(); i++) {
            // was tun?
        }
        System.out.println(buchstabe + ":"+ count );
    }
}
 
Ok, mal eine "Teilaufgabe":

Java:
public class testa4 {
    public static void main(String[] args) {
        String wort = readString("Bitte ein Wort eingeben");
        String buchstabe = readString("Bitte einen Buchstaben eingeben");
        vorkommen(wort, buchstabe.charAt(0));
    } 


    // Methode soll ausgeben, wie oft das Zeichen buchstabe im Wort vorkommt
    public static void vorkommen(String work, char buchstabe) {
        char[] zeichen = wort.toCharArray();
        int count =0;
        for (int i = 0; i<wort.length(); i++) {
            // was tun?
        }
        System.out.println(buchstabe + ":"+ count );
    }
}
die for-Schleife soll schauen welcher Buchstabe an der Stelle i ist und ihn dann zählen oder?
 
Nein, außer wenn char ein Zahlenwert wäre!

Zählen kannst Du grundlegend mit:
Java:
count = count + 1;
// oder
count += 1;
// oder
count++;

Jetzt mußt Du noch prüfen, ob der zu zählende Buchstabe der Gesuchte ist!

VG Klaus
 
Java:
    [B]public[/B] [B]static[/B] [B]void[/B] vorkommen (String wort) { 

        [B]char[/B] [] zeichen=wort.toCharArray();

        [B]int[/B] count = 0;

        [B]for[/B] ([B]int[/B] i=0; i<wort.length();i++) {

            [B]char[/B] x=zeichen[i];

            [B]if[/B] (zeichen[i]==x) {

                count +=1;

            }

            System.[B][I]out[/I][/B].println(zeichen[i] + ":" + count);}

        

    }

Ich habe es so probiert, jedoch kommen dann die zahlen 1 bis x jenachdem wie lange das wort ist...
 
Java:
public static void vorkommen (String wort)
{
    char [] zeichen=wort.toCharArray();
    int count = 0;
    for( int i=0; i<wort.length();i++ )
    {
        char x=zeichen[i];     // ist Dir klar,
        if( zeichen[i]==x )    // was Du HIER machst ???
        {
             count +=1;
        }
        System.out.println( zeichen[i] + ":" + count );
    }
}

Du setzt 'x' auf den Wert von 'zeichen' und vergleichst direkt danach ob 'zeichen' auch wirklich gleich 'x' ist !!??!!

VG Klaus
 
Beim Abgeben sind wir noch nicht. Schau, das Ziel ist es, Dir dabei zu helfen, Code zu verstehen. Im besten Fall tritt ein "Aha-Effekt" ein und Du bist danach in der Lage solche Dinge selbständig zu lösen.
Anhand von meinem Code würde mir das leichter fallen zu verstehen, weil in dem Code aus #20 andere Variablen zu kommen, das verwirrt mich noch mehr.
 
OK, versuchen wir es näher an Deinem Code:
Java:
public class testa4 {
    public static void main(String[] args) {
        String wort = readString("Bitte ein Wort eingeben");
        vorkommen(wort);
    }   

    public static void vorkommen (String wort) { 
        char[] zeichen = wort.toCharArray();
        char x = 'a';
        int count =0;

        for (int i = 0; i<wort.length(); i++) {
             // zähle, wie oft der in Variable x gespeicherte Buchstabe im Wort auftaucht
        }
        System.out.println(x + ":"+ count );
    }
}
 
Java:
[B]public[/B] [B]static[/B] [B]void[/B] vorkommen (String wort) { 

        [B]char[/B] [] zeichen=wort.toCharArray();

        [B]char[/B] x= 'a';

        [B]int[/B] count = 0;

        

        [B]for[/B] ([B]int[/B] i=0; i<wort.length();i++) {

            

            [B]if[/B] (zeichen[i]==x) {

                count++;

            }

            System.[B][I]out[/I][/B].println(x + ":" + count);

            }

Nun schaut die Schleife nur auf den Buchstabe a, gibt es eine Möglichkeit das universell zu machen?
 
NB: Kannst Du beim Einfügen des Codes bitte nur Inhalte Einfügen (Strg+Shift+V), die Formatierungen stören.

Nun schaut die Schleife nur auf den Buchstabe a, gibt es eine Möglichkeit das universell zu machen?

Klar, indem Du das char x nicht als Variable im Rumpf der Methode sondern als Parameter angibst. Das ist genau die Methode aus aus Kommentar #20 🙂

Java:
    public static void vorkommen(String work, char x) {
        char[] zeichen = wort.toCharArray();
        int count =0;
        for (int i = 0; i<wort.length(); i++) {
            if (zeichen[i] == x) {
                count++;
            }
        }
        System.out.println(x + ":"+ count );
    }

Ist die Sache soweit klar?
 
NB: Kannst Du beim Einfügen des Codes bitte nur Inhalte Einfügen (Strg+Shift+V), die Formatierungen stören.



Klar, indem Du das char x nicht als Variable im Rumpf der Methode sondern als Parameter angibst. Das ist genau die Methode aus aus Kommentar #20 🙂

Java:
    public static void vorkommen(String work, char x) {
        char[] zeichen = wort.toCharArray();
        int count =0;
        for (int i = 0; i<wort.length(); i++) {
            if (zeichen[i] == x) {
                count++;
            }
        }
        System.out.println(x + ":"+ count );
    }

Ist die Sache soweit klar?
Ja das funktioniert, jedoch wie bekomme ich die Ausgabe von z.B. Otto in diesem Format hin:
O : 2
T : 2
T : 2
O : 2

Denn so sollte die Ausgabe aussehen und mit dem code funktioniert das bisher nicht
 
Wichtig ist erst mal zu verstehen, dass Du jetzt eine Methode hast, der Du ein Wort und einen Buchstaben mitgeben kannst und die Dir den Buchstaben, gefolgt von der Häufigkeit im Wort ausgibt.

D. h. wenn Du der Methode als Wort "OTTO" übergibst, und z. B. den ersten Buchstaben (hier also das 'O'), dann ist die Ausgabe

O: 2

Übergibst Du den zweiten Buchstaben (hier also 'T'), dann ist die Ausgabe

T: 2

Würdest Du jetzt also einfach für jeden Buchstaben aus dem Wort die Methode aufrufen, dann sollte das Ergebnis ja passen.

Folglich erweiterst Du den Code jetzt einfach um die ursprüngliche Methode aus der Aufgabe:
Java:
public class testa4 {
    public static void main(String[] args) {
        String wort = readString("Bitte ein Wort eingeben");
        vorkommen(wort);
    }   

    public static void vorkommen (String wort) { 
         // rufe die Methode vorkommen(wort, x) für jedes Zeichen aus Wort auf
    }

    public static void vorkommen(String wort, char x) {
        char[] zeichen = wort.toCharArray();
        int count =0;
        for (int i = 0; i<wort.length(); i++) {
            if (zeichen[i] == x) {
                count++;
            }
        }
        System.out.println(x + ":"+ count );
    }
}
 
Wichtig ist erst mal zu verstehen, dass Du jetzt eine Methode hast, der Du ein Wort und einen Buchstaben mitgeben kannst und die Dir den Buchstaben, gefolgt von der Häufigkeit im Wort ausgibt.

D. h. wenn Du der Methode als Wort "OTTO" übergibst, und z. B. den ersten Buchstaben (hier also das 'O'), dann ist die Ausgabe

O: 2

Übergibst Du den zweiten Buchstaben (hier also 'T'), dann ist die Ausgabe

T: 2

Würdest Du jetzt also einfach für jeden Buchstaben aus dem Wort die Methode aufrufen, dann sollte das Ergebnis ja passen.

Folglich erweiterst Du den Code jetzt einfach um die ursprüngliche Methode aus der Aufgabe:
Java:
public class testa4 {
    public static void main(String[] args) {
        String wort = readString("Bitte ein Wort eingeben");
        vorkommen(wort);
    }  

    public static void vorkommen (String wort) {
         // rufe die Methode vorkommen(wort, x) für jedes Zeichen aus Wort auf
    }

    public static void vorkommen(String wort, char x) {
        char[] zeichen = wort.toCharArray();
        int count =0;
        for (int i = 0; i<wort.length(); i++) {
            if (zeichen[i] == x) {
                count++;
            }
        }
        System.out.println(x + ":"+ count );
    }
}
wie meinst du das mit aufrufen?
 
Ok, wir haben ein Gesamtproblem, das lautet: gib die Häufigkeit eines jeden Buchstabens in einem gegebenen Wort aus.

Das ist etwas kompliziert, daher zerlegen wir das Problem in kleinere Probleme, die sich leichter lösen lassen:

1. Gib die Häufigkeit eines gegebenen Buchstabens in einem gegebenen Wort aus
2. Führe 1. für jeden Buchstaben in einem gegebenen Wort aus.

Dadurch lösen wir das Gesamtproblem.

Punkt 1 haben wir mit der Methode erschlagen, die als Parameter ein Wort und einen Buchstaben entgegennimmt (vorkommen(wort, x);.

Wie Du ja richtig festgestellt hast, ist das aber nicht die Methode, die Du abgeben sollst. Daher bauen wir diese jetzt mit ein und diese muss nur noch der Punkt 2. umsetzen.

Wenn Du Dich leichter ohne Methoden tust, dann lösen wir das anders.
 

Neue Themen


Zurück
Oben