Eine Zeichenkette aus Klein- und Großbuchstaben (aber ohne Sonderzeichen oder Leerräume) wird hinsichtlich der Buchstabenhäufigkeit analysiert. Im Ergebnis wird zu jedem der 26 Großbuchstaben des Alphabets die Anzahl des Auftretens und eine entsprechend lange * - Reihe ausgegeben:
alfred@duron:~/java/kurs/krypto> java haufigkeit diesisteintestundinformatikistschoensagteininformatiklehrerdenninformatiklehrerluegennichtsagtderlehrer A: 5 ***** B: 0 C: 2 ** D: 4 **** E: 15 *************** F: 3 *** G: 3 *** H: 5 ***** I: 12 ************ J: 0 K: 3 *** L: 4 **** M: 3 *** N: 11 *********** O: 4 **** P: 0 Q: 0 R: 10 ********** S: 7 ******* T: 10 ********** U: 2 ** V: 0 W: 0 X: 0 Y: 0 Z: 0
Um dies zu realisieren, verwenden wir bekannte ``Algorithmen'' aus den vorangegangenen Kapiteln:
import java.io.*;
public class haufigkeit {
public static void main (String[] args) throws IOException {
BufferedReader eingabepuffer = new BufferedReader(new InputStreamReader(System.in));
String zeile = eingabepuffer.readLine();
analyse (zeile);
}
public static void analyse(String s) {
byte[] text = new byte[200];
int[] anzahl = new int[26];
int i;
text = s.getBytes();
for (i = 0; i < text.length; i++)
if (text[i]>90) text[i]-=32; // Alles nach Großbuchstaben umwandeln
for (i = 0; i < text.length; i++)
anzahl[(text[i]-65)]++; // und jetzt zählen ;-)
for (i = 0; i < 26; i++)
System.out.println((char) (i+65) + ": " + anzahl[i] + "\t" + stern(anzahl[i])); // Ergebnis ausgeben
}
public static String stern(int anzahl) {
String s = "";
for (int i = 0; i<anzahl; i++) s+="*";
return s;
}
}
Beachte die Funktion stern(): Sie gibt einen Zeichenkettenwert zurück (und ist daher nicht vom Typ void). Damit kann ihr Wert in der Ausgabe des jeweiligen Zählergebnisses einfach mit den anderen Strings verkettet werden.