Java Häufigkeit von Buchstaben berechnen

  • Ersteller Ersteller Garnele
  • Erstellt am Erstellt am
Status
Für weitere Antworten geschlossen.
G

Garnele

Gast
Hallo!

ich hab eine Aufgabe, bei der ich nicht weiter komme und ich hoffe ihr könnt mir helfen. Unzwar habe ich einen Text und jetzt soll ich ein Programm schreiben, dass die Häufigkeit der Buchstaben A bis Z zählt (nur Großbuchstaben). Gespeicht sollen die Werte in einem Array werden. Ausserdem sollen die Werte prozetual angezeigt werden.

Ich möchte jetzt keinen direkten Code, sondern nur eine Hilfe, wie ich das machen muss weil ich gerade echt keine Ahnung habe wie ich vorgehen soll.

Danke schonmal für eure Hilfe!
Gruß die Garnele!
 
Hi,

falls der Text ein String ist, erstell eine Schleife wo du jedes Zeichen mit der charAt(index)-Methode dir anguckst und diesen mit einem Integerwert aus der ASCII-Tabelle vergleichst.
 
jedes zeichen einzeln überprüfen ob isUpperCase() und dann in eine HashMap geben.
 
Array anlegen mit Zahlen (mit Nullwerten belegen).
Datei öffnen, worin sich der Text befindet.
1. Zeichen lesen.
Durch ASCII Code (googlen, falls es dir nichts sagt) die Nummer zum Buchstaben herausbekommen.
Die Zelle im Array um den Wert eins erhöhen.
2. Zeichen lesen.
....
....
X. Zeichen lesen
Zelle um 1 erhöhen.
Ausgabe des Arrays.
 
Als erstes wäre wohl ein Array mit 26 Plätzen geeignet für A-Z.
Danach gehst du praktisch einfach Zeichen für Zeichen durch deinen String oder deine Strings und erhöhst den jeweiligen Array-Eintrag um eins.
Den Platz bekommst du mit dem Ascii-Code des Buchstabens.
Da die allerdings größer sind als deine Array-Indices musst du dir noch was dafür überlegen, es ist einfach, aber das bleibt dir überlassen ;)

Prozentual kannst du die Ausgabe machen indem du "Anzahl des Buchstabens / Totale Anzahl der Buchstaben bzw. Länge des Texts ohne Leerzeichen/Kommata usw." machst.
 
Ne Map ist die wesentlich objektorientiertere und modernere Herangehensweise an dieses Problem anstatt ein Array.

Für eine simple Schulaufgabe oder Uni Aufgabe hätte ich aber wohl auch ein Array genommen, denn einen finalen Wert von einem Code zu subtrahieren wäre mir zu Beginn meiner Laufbahn sicherlich auch einfacher gefallen ;-)
 
Zunächst mal würde ich (nach ggf. toUpperCase) alle unerwünschten Zeichen entfernen (replaceAll). Anschließend dann über das Ergebnis iterieren und die entsprechende Stelle im Array erhöhen (count[string.charAt(i)-'A']++).
 
@Keepers: Wenn er bei solch einer Aufgabe nachfragt kann man davon ausgehen, dass die einfachste Variante das Ziel ist und nicht Map, mit 2 Generics für Schlüssel und Wert.
Das erschlägt einen Neuling doch direkt ;)

Zudem ist das wahrscheinlich vielen, mich eingeschlossen, selbst aus Übungen bekannt.
 
Als erstes wäre wohl ein Array mit 26 Plätzen geeignet für A-Z.
Danach gehst du praktisch einfach Zeichen für Zeichen durch deinen String oder deine Strings und erhöhst den jeweiligen Array-Eintrag um eins.
Den Platz bekommst du mit dem Ascii-Code des Buchstabens.
Da die allerdings größer sind als deine Array-Indices musst du dir noch was dafür überlegen, es ist einfach, aber das bleibt dir überlassen

Danke dir, das hat mir schonmal sehr weiter geholfen!
Wie ich das mit der Array Position mache, weiß ich schon ;) (Die aktuelle Zahl - 65 (A))

Der Text ist etwas länger, es sind also auch leerzeichen enthalten, die kann ich ja einfach mit einer If Bediengung aussortiren oder ? (If 65 < aktuelle Zahl < 90)
 
Könntest du, aber warum musst du es unbedingt unleserlich machen? zeichen >= 'A' ist auch eine gültige Bedingung...
 
Genau, entweder so oder eben vorher entfernen lassen mit der replace-Methode.
Wenn du die aber noch nicht kennst würde ich einfach die Abfrage nehmen wie du sie schon geschriebenhast.

@xbrtll: Das wird er sicher einfach noch nicht wissen ;)
 
So wie es xbrtll meint, kenne ich es noch nicht, trotzdem danke für den Tipp!
Dann mache ich es so wie ich es oben geschrieben habe!

Jetzt aber noch eine Frage, wie binde ich eine txt Datei ein ? Das ist meine erste Aufgabe, wo ich eine txt mit einbinden soll.

Danke schonmal für die tolle Hilfe!
 
Liebe Leute, löst ihm doch nicht seine Aufgabe. Es ist immer noch kein Hausaufgabenforum. Etwas suchen darf er schon.

@Garnele: nichts für ungut, aber google einfach mal nach java read txt und schon hast du deine Lösung.
 
Status
Für weitere Antworten geschlossen.

Ähnliche Themen

Zurück
Oben