package Lernen; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.*; public class WordCounter { public static void main(String[] args) { // Dateipfad zur gedichte.txt String filePath = "gedichte.txt"; // TreeMap zur Speicherung der Wörter und ihrer Häufigkeiten TreeMap wordCountMap = new TreeMap<>(); // Zähle die Wörter in der Datei und finde das längste Wort int longestWordLength = countWords(filePath, wordCountMap); // Sortiere die TreeMap nach den Häufigkeiten List> sortedWordList = new ArrayList<>(wordCountMap.entrySet()); sortedWordList.sort(Map.Entry.comparingByValue(Collections.reverseOrder())); // Gib die Wörter und ihre Häufigkeiten aus System.out.println("Wortauflistung:"); for (Map.Entry entry : sortedWordList) { System.out.println("'" + entry.getKey() + "' kommt " + entry.getValue() + "-mal vor"); } // Gib die Anzahl der verschiedenen Wörter aus System.out.println("Es sind " + wordCountMap.size() + " verschiedene Worte"); // Gib das häufigste Wort aus System.out.println("Das häufigste Wort ist '" + sortedWordList.get(0).getKey() + "', es kommt " + sortedWordList.get(0).getValue() + "-mal vor"); // Gib das längste Wort aus System.out.println("Das längste Wort hat eine Länge von " + longestWordLength + " Zeichen"); } public static int countWords(String filePath, TreeMap wordCountMap) { int longestWordLength = Integer.MIN_VALUE; // Initialisiere mit dem kleinsten möglichen Wert try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) { String line; while ((line = reader.readLine()) != null) { String[] words = line.split("\\s+"); for (String word : words) { word = word.toLowerCase().replaceAll("[^a-zA-ZäöüÄÖÜß]", ""); // Entferne Sonderzeichen if (!word.isEmpty()) { wordCountMap.put(word, wordCountMap.getOrDefault(word, 0) + 1); longestWordLength = Math.max(longestWordLength, word.length()); // Aktualisiere die maximale Wortlänge } } } } catch (IOException e) { e.printStackTrace(); } return longestWordLength; } } //Ohne Sortierung //Dateipfad zur gedichte.txt /*String filePath = "gedichte.txt"; // HashMap zur Speicherung der Wörter und ihrer Häufigkeiten HashMap wordCountMap = new HashMap<>(); // Zähle die Wörter in der Datei und finde das längste Wort int longestWordLength = countWords(filePath, wordCountMap); // Gib die Wörter und ihre Häufigkeiten aus System.out.println("Wortauflistung:"); for (String word : wordCountMap.keySet()) { int count = wordCountMap.get(word); System.out.println("'" + word + "' kommt " + count + "-mal vor"); } // Gib die Anzahl der verschiedenen Wörter aus System.out.println("Es sind " + wordCountMap.size() + " verschiedene Worte"); // Gib das häufigste Wort aus String mostFrequentWord = ""; int maxFrequency = 0; for (String word : wordCountMap.keySet()) { int count = wordCountMap.get(word); if (count > maxFrequency) { maxFrequency = count; mostFrequentWord = word; } } System.out.println("Das häufigste Wort ist '" + mostFrequentWord + "', es kommt " + maxFrequency + "-mal vor"); // Gib das längste Wort aus System.out.println("Das längste Wort hat eine Länge von " + longestWordLength + " Zeichen");*/