Kann mir jemand dieses einfache Java Programm erklären?
Was passiert da genau und wieso muss man das schreiben was da geschrieben ist ?
3 Antworten
Das Programm zählt die Häufigkeit der Kleinbuchstaben a-z in einem String (funktioniert auch nur, wenn str nur aus Kleinbuchstaben besteht, sonst wirft Java eine Exception, weil man einen Index anspricht, der nicht existiert).
- freq[i] steht für die Anzahl des i-ten Buchstaben im Alphabet (bei 0 angefangen zu zählen). Am Anfang enthält es nur Nullen.
- In der Schleife wird jeder Buchstabe von str durchgegangen und gecheckt, ob es tatsächlich ein Buchstabe ist - wenn ja wird die Anzahl am Index des Buchstaben (s.u.) um eins erhöht.
- Das ganze macht man für jeden einzelnen Buchstaben in str.
- Zweite for-Schleife: Hier wird freq jetzt von hinten durchgegangen und jeder Buchstabe so oft ausgegeben, wie er in str vorkommt.
Zum Index des Buchstaben: Die Idee ist, dass die Anzahl von a an Stelle 0, die von b an Stelle 1, ..., die von z an Stelle 25 steht. In Zeile 8 möchte man jetzt genau den Wert eines bestimmten Buchstaben im Array um eins erhöhen. Dafür nimmt man sich den Charcode (str.charAt(i) gibt dir einen char, der aber auch als Zahl interpretiert werden kann) und zieht 97 von ihm ab.
Warum 97? Weil 97 der Charcode von a ist (damit ist 98 der von b, 99 der von c, ... und so erreicht man, dass die technische Nummerierung in Form von Charcodes zwischen 97 (a) und 122 (z) auf das Array mit Indizes von 0 bis 25 gespiegelt wird.
Hier:
str: hallowelt
Ausgabe: wtolllhea
LG
- das Ding zählt ersichtlich die Anzahl der Klein-Buchstaben „a bis z“, die in dem String str vorkommen, und gibt sie dann aus...
- wenn in str jedoch ein Groß-Buchstabe vorkommt, dann dürfte es zu ner Range Exception kommen... kicher
Hey kannst du mir das bitte genauer erklären also zeile für zeile ? Wäre mega nett. Bin gerade noch Einsteiger und möchte mehr lernen...
Es wird gezählt, welcher Buchstabe wie oft im String str vorkommt. (wobei das nur bei Kleinbuchstaben nicht crasht)
Anschließend werden alle Zeichen ausgegeben, jedoch alphabetisch absteigend und jeweils so oft, wie sie im String vorkommen.
Hey kannst du mir das bitte genauer erklären also zeile für zeile ? Wäre mega nett. Bin gerade noch Einsteiger und möchte mehr lernen...
DAnkeeee