Aufgabe ausgeführt.

This commit is contained in:
schrom01 2021-10-28 17:16:26 +02:00
parent 84af686f58
commit 353df6c5f3
2 changed files with 86 additions and 0 deletions

42
Main.java Normal file
View File

@ -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;
}
}

View File

@ -1,4 +1,7 @@
import java.io.File;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator;
import java.util.Locale;
import java.util.Map; import java.util.Map;
/** /**
@ -16,6 +19,9 @@ import java.util.Map;
public class Worthaeufigkeitsanalyse { public class Worthaeufigkeitsanalyse {
// Anstelle der Map dürfen Sie auch andere Datentypen verwenden. Testen Sie auch TreeMap. // Anstelle der Map dürfen Sie auch andere Datentypen verwenden. Testen Sie auch TreeMap.
private Map<String, Integer> woerterHaeufigkeit = new HashMap<>(); private Map<String, Integer> woerterHaeufigkeit = new HashMap<>();
private Map<String, Integer> zeichenHaeufigkeit = new HashMap<>();
private String text = new String();
/** /**
* Nimmt die uebergebene Zeichenkette in die Worthaeufigkeitsanalyse auf. * Nimmt die uebergebene Zeichenkette in die Worthaeufigkeitsanalyse auf.
@ -23,17 +29,52 @@ public class Worthaeufigkeitsanalyse {
* @param text zu verarbeitende Zeichenkette * @param text zu verarbeitende Zeichenkette
*/ */
public void verarbeiteText(String text) { public void verarbeiteText(String text) {
// TODO Ihre Implementation // 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<text.length(); i++){
if(zeichenHaeufigkeit.containsKey(text.substring(i, i+1))) {
zeichenHaeufigkeit.put(text.substring(i, i+1), zeichenHaeufigkeit.get(text.substring(i, i+1)) + 1);
}
else {
zeichenHaeufigkeit.put(text.substring(i, i+1), 1);
}
}
} }
/** /**
* Ausgabe der Worthaeufigkeitsanalyse auf der Konsole. * Ausgabe der Worthaeufigkeitsanalyse auf der Konsole.
*/ */
public void druckeStatistik() { public void druckeStatistik() {
System.out.println("Worthäufigkeiten:");
for (Map.Entry<String, Integer> wortHaeufigkeit : woerterHaeufigkeit.entrySet()) { for (Map.Entry<String, Integer> wortHaeufigkeit : woerterHaeufigkeit.entrySet()) {
System.out.printf("%3d %-40s%n", wortHaeufigkeit.getValue(), wortHaeufigkeit.getKey()); System.out.printf("%3d %-40s%n", wortHaeufigkeit.getValue(), wortHaeufigkeit.getKey());
} }
System.out.println("Zeichenhäufigkeiten:");
for (Map.Entry<String, Integer> zeichenHaeufigkeit : zeichenHaeufigkeit.entrySet()) {
System.out.printf("%3d %-40s%n", zeichenHaeufigkeit.getValue(), zeichenHaeufigkeit.getKey());
} }
}
public static void main(String[] args) { public static void main(String[] args) {
Worthaeufigkeitsanalyse hauefigkeitsanalyse = new Worthaeufigkeitsanalyse(); Worthaeufigkeitsanalyse hauefigkeitsanalyse = new Worthaeufigkeitsanalyse();
@ -41,5 +82,8 @@ public class Worthaeufigkeitsanalyse {
hauefigkeitsanalyse.verarbeiteText("Hans meint, er teile die Leidenschaft mit Fritz."); 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.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(); hauefigkeitsanalyse.druckeStatistik();
} }
} }