Hallo Community
Ich beiss' mir grade an einem im Grunde simplen Problem die Zähne aus:
Ich soll einen String eingeben, und darin die Buchstabenhäufigkeiten zählen. Ich gebe also einen "Text" ein, und danach hab ich z.B 4x den Buchstaben "E" benutzt und soll dieses "4x" in einem Array als Wert ablegen. Dies für das ganze ABC.
Was hab ich bereits gecodet? Eigentlich alles, aber bei der for-Schleife zickt er, wenn ich mich nicht irre.
Was wird dort genau gemacht:
Der String wird an der Position "i" abgefragt. Daraus ergibt sich ein Buchstabe, beispielsweise "A". Nun hat der Char "A" den Int Wert "65", weshalb ich von allen Buchstaben, die sich ergeben, 65 abziehe. Damit erreicht man, dass A an der "0"-ten Referenz gespeichert wird, B an der "1"-ten, C an der "2"-ten, usw.
Wenn nun der Buchstabe A bereits zum 2. mal vorkommt, wird der Array-Wert um 1 erhöht. Somit sieht man schlussendlich, welcher Buchstabe wie oft benutzt wurde.
Wo liegt mein Fehler?
Grüsse
Trudler
Ich beiss' mir grade an einem im Grunde simplen Problem die Zähne aus:
Ich soll einen String eingeben, und darin die Buchstabenhäufigkeiten zählen. Ich gebe also einen "Text" ein, und danach hab ich z.B 4x den Buchstaben "E" benutzt und soll dieses "4x" in einem Array als Wert ablegen. Dies für das ganze ABC.
Was hab ich bereits gecodet? Eigentlich alles, aber bei der for-Schleife zickt er, wenn ich mich nicht irre.
Was wird dort genau gemacht:
Der String wird an der Position "i" abgefragt. Daraus ergibt sich ein Buchstabe, beispielsweise "A". Nun hat der Char "A" den Int Wert "65", weshalb ich von allen Buchstaben, die sich ergeben, 65 abziehe. Damit erreicht man, dass A an der "0"-ten Referenz gespeichert wird, B an der "1"-ten, C an der "2"-ten, usw.
Wenn nun der Buchstabe A bereits zum 2. mal vorkommt, wird der Array-Wert um 1 erhöht. Somit sieht man schlussendlich, welcher Buchstabe wie oft benutzt wurde.
Wo liegt mein Fehler?
Grüsse
Trudler
Code:
System.out.println("Geben sie eine Zeichenkette ein: ");
String zeichenkette = Terminal.readString();
String lower = zeichenkette.toLowerCase();
int[] frequency = new int[26];
for (int i=0; i<lower.length(); ++i){
frequency[(int)lower.charAt(i)-65] += 1; //An Array-position des Buchstabens wird der Wert um 1 erhöht. Buchstabe A hat INT Wert 65, deswegen zieht man 65 ab, damit position 0 = a ist.
}
for (int i=0; i<frequency.length; ++i) System.out.println(frequency[i]);