95 lines
3.7 KiB
Java
95 lines
3.7 KiB
Java
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<String, Integer> 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<Map.Entry<String, Integer>> 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<String, Integer> 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<String, Integer> 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<String, Integer> 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");*/ |