diff --git a/Main.java b/Main.java new file mode 100644 index 0000000..ab4a2d2 --- /dev/null +++ b/Main.java @@ -0,0 +1,42 @@ +import java.io.File; +import java.io.FileNotFoundException; +import java.util.Scanner; + +public class Main { + + public static void main(String[] args) { + Worthaeufigkeitsanalyse analyse = new Worthaeufigkeitsanalyse(); + File file = getFileFromArguments(args); + String text = ""; + Scanner scanner = null; + try { + scanner = new Scanner(file); + while (scanner.hasNextLine()){ + text = text + scanner.nextLine(); + text = text + " "; + } + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + analyse.verarbeiteText(text); + + analyse.druckeStatistik(); + } + + private static File getFileFromArguments(String[] args) { + // ------------------------------------------------------------ + // Check if a valid filename has been supplied on command line: + // ------------------------------------------------------------ + // Is there a command line argument at all? + if (args.length <= 0) { + throw new IllegalArgumentException("ERROR: You have to supply a filename on the command line!"); + } + // Yes, there is at least one argument: + String filename = args[0]; + File file = new File(filename); + if (!file.exists()) { // Check if file with that name exists: + throw new RuntimeException(String.format("ERROR: Data file: '%s' does not exist!", filename)); + } + return file; + } +} diff --git a/Worthaeufigkeitsanalyse.java b/Worthaeufigkeitsanalyse.java index ae8a4d6..73dd508 100644 --- a/Worthaeufigkeitsanalyse.java +++ b/Worthaeufigkeitsanalyse.java @@ -1,4 +1,7 @@ +import java.io.File; import java.util.HashMap; +import java.util.Iterator; +import java.util.Locale; import java.util.Map; /** @@ -16,6 +19,9 @@ import java.util.Map; 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. @@ -23,23 +29,61 @@ public class Worthaeufigkeitsanalyse { * @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(); + } + + } \ No newline at end of file