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.