java, string einlesen-Ausgabe: anzahl des meisten Buchstabes

2 Antworten

Wenn du einen ausließt, dann hast du einen String, wie können da aufmal mehrere Strings drin sein? Hast du ein Array von Strings oder was meinst du genau? Ansonsten musst du einfach nur den String durchlaufen in einer For-Schleife, die Buchstaben zählen (jeder Buchstabe einen eigenen Zähler), und am Ende den höchsten sammt seiner Anzahl ausgeben. Gibt bestimmt noch performantere Methoden dafür, aber diese ist mir grade zuerst eingefallen.

Hi, also so ähnlich habe ic das auch :) also ich habe das zunächst so gemacht: Scanner scan = new Scanner(System.in); String eingabe = scanner.nextLine();

int zaehler a=0;
int zaehler b=0;
int zaehler c=0;
int zaehler d=0;

...usw( das ganze Alphabet) und dann habe ich: public static String counter (String s){

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

    if (eingabe.charAt(i)==a){
    zaehler A++; 
    }
    if (eingabe.charAt(i)==b){
    zaehler B++; 

...usw mein problem ist, dass ich nicht weiß wie ich sowas speichere und wie man das dann mit System.out.println ausgibt

0
@Juliemalie

Was macht denn "int zaehler a=0;"? o.O Leerzeichen sind in Variablennamen üblicherweise nicht zugelassen.

Beschäftige dich mit Arrays. Die sind für so etwas besser geeignet.

In deinem Fall benötigst du aber gar nicht so viele Variablen. Dir reicht ein aktueller Buchstabenzähler und ein Merker. Sagen wir, du hast 5 as gezählt. Dann schreibst du in deinen Merker 5 und in eine andere Variable "a". Dann zählst du die bs. Sind es sagen wir 3, belässt du den Merker so und zählst die cs. Gibt es 8 cs, überschreibst du die Merker, usw.

1
@Suboptimierer

Da haben wir zum Beispiel schon die Erste, deutlich bessere und trotzdem sehr einfache Methode. :D

0

Du baust dir eine Schleife, die über alle ASCII-Werte 65-122 geht. Dann hast du als Variable einen aktuellen Vorkommniszähler und einen Highscore-Zähler. Den aktuellen Zähler setzt du immer hoch, wenn in der Schleife über jedes Zeichen des Strings der ASCII-Wert als Buchstabe konvertiert gefunden wurde. Am Ende setzt du die Highscore (Zahl + Zeichen), wenn die neue Anzahl größer ist, als der bisherige Highscore.

Du kannst das Programm beschleunigen, wenn du in der Schleife die ASCII-Zeichen 91 bis 96 ignorierst. So wie beschrieben, werden keine deutschen Umlaute behandelt. Aber das kannst du dir ja noch überlegen ;)

Was möchtest Du wissen?