import java.io.File; import java.util.HashMap; import java.util.Iterator; import java.util.Locale; import java.util.Map; /** * Zaehlt die Anzahl Vorkommnisse von Woertern ueber mehrere Zeichenketten. * Es lassen sich eine beliebige Anzahl an Zeichenketten uebergeben. Die * Statistik wird fortlaufend gefuehrt. Die Wortzaehlung laesst sich jederzeit * ausgeben. Die Satzeichen . , ? ! " : ; werden entfernt. Alle Buchstaben * werden in Kleinbuchstaben umgewandelt um beispielsweise das Wort 'die' * inmitten eines Satzes und das Wort 'Die' am Anfang eines Satzes als gleiches * Wort werten zu koennen. * * @version 1.0 * @author XXXX */ public class Worthaeufigkeitsanalyse { // Anstelle der Map dürfen Sie auch andere Datentypen verwenden. Testen Sie auch TreeMap. private Map woerterHaeufigkeit = new HashMap<>(); private Map zeichenHaeufigkeit = new HashMap<>(); private String text = new String(); /** * Nimmt die uebergebene Zeichenkette in die Worthaeufigkeitsanalyse auf. * * @param text zu verarbeitende Zeichenkette */ public void verarbeiteText(String text) { // TODO Ihre Implementation text = text.toLowerCase(Locale.ROOT); analyseWorthaeufigkeit(text); analyseZeichenhaeufigkeit(text); } private void analyseWorthaeufigkeit(String text) { String[] woerter = text.split("[.,?!\":; ]+"); for(String wort : woerter) if(woerterHaeufigkeit.containsKey(wort)) { woerterHaeufigkeit.put(wort, woerterHaeufigkeit.get(wort) + 1); } else { woerterHaeufigkeit.put(wort, 1); } } private void analyseZeichenhaeufigkeit(String text) { for(int i = 0; i wortHaeufigkeit : woerterHaeufigkeit.entrySet()) { System.out.printf("%3d %-40s%n", wortHaeufigkeit.getValue(), wortHaeufigkeit.getKey()); } System.out.println("Zeichenhäufigkeiten:"); for (Map.Entry zeichenHaeufigkeit : zeichenHaeufigkeit.entrySet()) { System.out.printf("%3d %-40s%n", zeichenHaeufigkeit.getValue(), zeichenHaeufigkeit.getKey()); } } public static void main(String[] args) { Worthaeufigkeitsanalyse hauefigkeitsanalyse = new Worthaeufigkeitsanalyse(); hauefigkeitsanalyse.verarbeiteText("Fritz sagt: \"Die Softwareentwicklung ist meine Leidenschaft!\""); hauefigkeitsanalyse.verarbeiteText("Hans meint, er teile die Leidenschaft mit Fritz."); hauefigkeitsanalyse.verarbeiteText("John fuegt hinzu, dass die Softwareentwicklung nicht nur aus Programmieren bestehe, sondern es sich dabei um einen komplexen Prozess, bestehend aus vielen kleinen Komponenten, handelt.\""); hauefigkeitsanalyse.druckeStatistik(); } }