diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 852f901..738f53d 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -12,6 +12,7 @@ + @@ -37,8 +38,8 @@ - - + + @@ -47,8 +48,8 @@ - - + + @@ -67,8 +68,8 @@ - - + + @@ -77,23 +78,8 @@ - - - - - - - - - - - - - - - - - + + @@ -102,8 +88,8 @@ - - + + @@ -129,10 +115,10 @@ - - + @@ -752,12 +739,7 @@ - - - - - - + @@ -805,12 +787,7 @@ - - - - - - + @@ -858,12 +835,7 @@ - - - - - - + @@ -911,12 +883,7 @@ - - - - - - + @@ -964,12 +931,7 @@ - - - - - - + @@ -1009,12 +971,7 @@ - - - - - - + @@ -1046,12 +1003,7 @@ - - - - - - + @@ -1083,12 +1035,7 @@ - - - - - - + @@ -1132,19 +1079,6 @@ - - - - - - - - - - - - - @@ -1153,34 +1087,42 @@ - + - - + + - - + + + + + + + + + + - - + + - - + + diff --git a/out/artifacts/Textanalyse_jar/Textanalyse.jar b/out/artifacts/Textanalyse_jar/Textanalyse.jar index abd5443..790f052 100644 Binary files a/out/artifacts/Textanalyse_jar/Textanalyse.jar and b/out/artifacts/Textanalyse_jar/Textanalyse.jar differ diff --git a/out/production/Textanalyse/com/structix/Analyse.class b/out/production/Textanalyse/com/structix/Analyse.class index efb6e6b..9654d1e 100644 Binary files a/out/production/Textanalyse/com/structix/Analyse.class and b/out/production/Textanalyse/com/structix/Analyse.class differ diff --git a/out/production/Textanalyse/com/structix/CommandLineInterface.class b/out/production/Textanalyse/com/structix/CommandLineInterface.class index b929d56..f2db7be 100644 Binary files a/out/production/Textanalyse/com/structix/CommandLineInterface.class and b/out/production/Textanalyse/com/structix/CommandLineInterface.class differ diff --git a/out/production/Textanalyse/com/structix/Main.class b/out/production/Textanalyse/com/structix/Main.class index 87aef5a..9de3ab9 100644 Binary files a/out/production/Textanalyse/com/structix/Main.class and b/out/production/Textanalyse/com/structix/Main.class differ diff --git a/out/production/Textanalyse/com/structix/Menu.class b/out/production/Textanalyse/com/structix/Menu.class index 2c176ac..2b96432 100644 Binary files a/out/production/Textanalyse/com/structix/Menu.class and b/out/production/Textanalyse/com/structix/Menu.class differ diff --git a/out/production/Textanalyse/com/structix/Menubuilder.class b/out/production/Textanalyse/com/structix/Menubuilder.class index 1e0ce45..08cdda0 100644 Binary files a/out/production/Textanalyse/com/structix/Menubuilder.class and b/out/production/Textanalyse/com/structix/Menubuilder.class differ diff --git a/src/com/structix/Analyse.java b/src/com/structix/Analyse.java index 22b5e7c..c31f0f9 100644 --- a/src/com/structix/Analyse.java +++ b/src/com/structix/Analyse.java @@ -8,7 +8,8 @@ import java.util.Scanner; * Created by structix on 14.05.16. */ -/* Analyse Klasse: +/** + * Analyse Klasse: * Hier wird sowohl die Datei eingelesen, als auch verarbeitet. * Die Ergebnisse werden dann von den Methoden zurückgeliefert * @@ -210,29 +211,56 @@ public class Analyse { return (int) prozentsatz(anzBuchstabenMLeerzeichen() - anzBuchstabenOLeerzeichen(), anzBuchstabenMLeerzeichen()); } + + public String textformatWoerter(int anzahlWoerter) { + + //Hier wird der Text anhand der Anzahl der Wörter umgebrochen + String output = ""; int zaehler = 0; for (int i = 0; i < woerterGesamt.length; i++) { + + /** + * Solange der Zeilenlängen Zähler (hier zaehler genannt) + * kleiner der Anzahl der Wörter ist, werden die Wörter nur in eine Zeile geschrieben. + * Überschreitet der zaehler dieses Kriterium, wird ein Zeilenumbruch gemacht und der + * zaehler auf 0 gesetzt. + */ + if (zaehler < anzahlWoerter) { output += woerterGesamt[i] + " "; zaehler++; } else { output += "\n"; zaehler = 0; + //Da bei diesem Item der Umbruch gesetzt wurde, + //muss es noch normal behandelt werden --> i dekrementieren i--; } } return output; } + public String textFormatBuchstaben(int anzahlBuchstaben) { + + //Hier wird der Text nach Anzahl der Buchstaben umgebrochen (nur ganze Wörter) + String output = ""; if (laengstesWort() <= anzahlBuchstaben) { int zeile = 0; for (int i = 0; i < woerterGesamt.length; i++) { + + /** + * Es wird geprüft, ob die Zeile mit dem neuen Wort noch kleiner/gleich dem Maximum ist. + * Wenn ja, wird es der Zeile hinzugefügt. + * Wenn nicht, wird ein Zeilenumbruch eingefügt, die Buchstaben Anzahl der Zeile auf 0 gesetzt + * und das Wort wiederholt, damit es in die neue Zeile kommt und nicht übersprungen wird. + */ + zeile += woerterGesamt[i].length(); if (zeile <= anzahlBuchstaben) { output += woerterGesamt[i] + " "; @@ -243,6 +271,7 @@ public class Analyse { } } } else { + //Fehler output = "Anzahl der Buchstaben muss mindestens dem längsten Wort entsprechen(" + laengstesWort() + " Zeichen)."; } return output; @@ -250,6 +279,12 @@ public class Analyse { public int laengstesWort() { + + /** + * Hier wird das längste Wort ermittelt, in dem der Variable max immer die momentan + * gräßte Länge zugewiesen wird. + */ + int max = 0; for (int i = 0; i < einzelneWoerter.length; i++) { if (einzelneWoerter[i].length() > max) { @@ -260,7 +295,12 @@ public class Analyse { } + public String hauefigkeitBuchstaben(String muster) { + + //Hier wird die Häufigkeit der Buchstaben bestimmt + + //Das Muster und der Inhalt werden in ein Char Array konvertiert. Damit können sie direkt verglichen werden char buchstaben[] = muster.toLowerCase().toCharArray(); int anzahl[] = new int[buchstaben.length]; char allebuchstaben[] = inhalt.toLowerCase().toCharArray(); @@ -273,12 +313,18 @@ public class Analyse { for (int i = 0; i < allebuchstaben.length; i++) { for (int z = 0; z < buchstaben.length; z++) { + + /** + * Wenn der Buchstabe des Inhalts an der richtigen Stelle des Musters gleich ist, + * wird die dieser Buchstabe im Anzahl Array um 1 inkrementiert. + */ if (allebuchstaben[i] == buchstaben[z]) { anzahl[z] += 1; } } } + //Hier werden die Ergebnisse formatiert ausgegeben for (int i = 0; i < buchstaben.length; i++) { output += buchstaben[i] + ": " + anzahl[i] + " (" + prozentsatz(anzahl[i], allebuchstaben.length) + "%)\n"; } @@ -286,5 +332,44 @@ public class Analyse { } + public String leetspeakKonverter() { + + //Hier wird der Inhalt in das "Leetspeak Format" konvertiert + // https://de.wikipedia.org/wiki/Leetspeak + + char ersetzen[] = {'a', 'e', 'o', 'l', 't', 'g', 's', 'b'}; + char ersatz[] = {'4', '3', '0', '1', '7', '6', '5', '8'}; + String ausgabe = inhalt; + /** + * Hier werden Nacheinander die Buchstaben aeoltgsb mit den jeweiligen Zahlen ersetzt. + */ + for (int i = 0; i < ersetzen.length; i++) { + ausgabe = replaceChar(ausgabe, ersetzen[i], ersatz[i]); + } + return ausgabe; + } + + private String replaceChar(String input, char ersetzen, char ersatz) { + + //Hier können Buchstaben in einem Text ersetzt werden + + char buchstaben[] = input.toLowerCase().toCharArray(); + String output = ""; + for (int i = 0; i < buchstaben.length; i++) { + + /** + * Wenn der Buchstabe gleich dem zu ersetzenden ist, + * wird der Buchstabe überschrieben + */ + + if (buchstaben[i] == ersetzen) { + buchstaben[i] = ersatz; + } + output += buchstaben[i]; + } + return output; + } + + } diff --git a/src/com/structix/CommandLineInterface.java b/src/com/structix/CommandLineInterface.java index b0a2459..644a335 100644 --- a/src/com/structix/CommandLineInterface.java +++ b/src/com/structix/CommandLineInterface.java @@ -10,13 +10,18 @@ public class CommandLineInterface { private String cmds[]; private String cmdseinzeln[]; private String kommandos[] = {"-h", "-?", "--help", "--credits", "-w", "-v", "-b", "-ha", "-sl", "-tw", "-tb", - "-tl", "-bz"}; + "-tl", "-bz", "-1337", "-m"}; private String hilfe[] = {"Hilfe", "Hilfe", "Hilfe", "Credits", "Anzahl der Wörter", "Anzahl der verwschiedenen Wörter", "Anzahl der Buchstaben", "Häufigkeit der Wörter", "Anteil der Leerzeichen im Text", "Textformatierung nach Anzahl der Wörter pro Zeile", "Textformatierung nach Anzahl der Buchstaben pro Zeile", "Textformatierung: Längstes Wort", - "Buchstaben zählen"}; + "Buchstaben zählen", "1337 Text Konverter", "Menü anzeigen"}; + + private String DEVELOPER = "Janek Schoffit"; + private String VERSIONNAME = "1.0"; + + String dateipfad = ""; int dateipfadstelle = -1; @@ -115,6 +120,16 @@ public class CommandLineInterface { System.out.println("Bitte geben Sie alle Buchstaben ein, wonach gesucht werden soll (Bsp.: abcd): "); System.out.println(an.hauefigkeitBuchstaben(eingabe.nextLine())); break; + case "-1337": + System.out.println(an.leetspeakKonverter()); + break; + case "-m": + //Menü Objekt wird erzeugt + Menu m = new Menu(); + m.dateipfad(); + //Hauptmenü anzeigen + while (!m.hauptmenu()); + break; } } } @@ -127,13 +142,13 @@ public class CommandLineInterface { private String hilfe() { String hilfeText = "Benutzung: Textanalyse \n"; for (int i = 0; i < kommandos.length; i++) { - hilfeText += kommandos[i] + " - " + hilfe[i] + "\n"; + hilfeText += kommandos[i] + " || " + hilfe[i] + "\n"; } return hilfeText; } private String credits() { - return "Entwickler: Janek Schoffit"; + return "Entwickler: " + DEVELOPER + "\nVersion: " + VERSIONNAME; } diff --git a/src/com/structix/Main.java b/src/com/structix/Main.java index a741034..ec590ec 100644 --- a/src/com/structix/Main.java +++ b/src/com/structix/Main.java @@ -1,27 +1,16 @@ package com.structix; -/* Main: +/** + * Main: * Diese Klasse ist für die Ausführung des gesamten Programms verantwortlich. * Hier werden die nötigen Objekte erzeugt, um das Menü auszuführen. + * Falls im args Array Argumente enthalten sind, wird das CommandlineInterface gestartet. * */ - - - - - - -/* Funktionen: - * Einen Text aus einer Datei lesen und nach folgenden Kriterien analysieren: - * - Wörter zählen - * - Anzahl der verschiedenen Wörter im Text - * - Die häufigst verwendeten Wörter - * - */ - -/* Bearbeitungszeit +/** + * Bearbeitungszeit * 14.05.16: 13:04 - 14:08 Uhr * 15.05.16: 20:41 - 21:38 Uhr * 16.05.16: 20:47 - 21:44 Uhr @@ -30,6 +19,7 @@ package com.structix; * 24:05.16: 17:46 - 19:17 Uhr * 25.05.16: 10:47 - 11:32 Uhr * 26.05.16: 11:34 - 11:57 Uhr + * 29.05.16: 16:24 - 17:23 Uhr */ public class Main { @@ -38,8 +28,6 @@ public class Main { CommandLineInterface cmd = new CommandLineInterface(args); if (!cmd.argTest()) { - - //Menüteil wird ausgeführt, wenn keine Argumente übergeben werden //Menü Objekt wird erzeugt @@ -48,15 +36,17 @@ public class Main { m.debug(); //m.dateipfad(); - //Solange kein exit Befehl kommt, wird das Menü angezeigt. - //Es ist kein Schleifenkörper notwendig, da die Methode Hauptmenu - //schon einen Boolean Wert zurückgibt und damit bestimmt, ob die Bedingung wahr - //bleibt oder nicht - while (!m.hauptmenu()) ; + /** + * Solange kein exit Befehl kommt, wird das Menü angezeigt. + * Es ist kein Schleifenkörper notwendig, da die Methode Hauptmenu + * schon einen Boolean Wert zurückgibt und damit bestimmt, ob die Bedingung wahr + * bleibt oder nicht + */ + + while (!m.hauptmenu()); //Nachricht vor dem Beenden des Programms System.out.println("Auf Wiedersehen!"); } else { - //Commandline Part cmd.ausfuehren(); diff --git a/src/com/structix/Menu.java b/src/com/structix/Menu.java index a12c533..188c1dc 100644 --- a/src/com/structix/Menu.java +++ b/src/com/structix/Menu.java @@ -6,7 +6,8 @@ import java.util.Scanner; * Created by structix on 15.05.16. */ -/* Menu Klasse: +/** + * Menu Klasse: * Diese Klasse bestimmt das Verhalten des Menüs. * Hier werden die Funktionen hinter den Menüeinträgen bestimmt. */ @@ -104,7 +105,7 @@ public class Menu { boolean exit = false; int auswahl = 0; //Menü wird wieder mit Strings befüllt und der Rückgabe Wert der Variable auswahl zugeordnet - auswahl = formatmenu.menuAnzeigen(new String[]{"Nach Wörtern pro Zeile trennen", "Nach Anzahl der Buchstaben pro Zeile trennen", "Anzahl der Buchstaben des längsten Wortes"}, "||"); + auswahl = formatmenu.menuAnzeigen(new String[]{"Nach Wörtern pro Zeile trennen", "Nach Anzahl der Buchstaben pro Zeile trennen", "Anzahl der Buchstaben des längsten Wortes", "1337 Text Konverter"}, "||"); //Fallunterscheidung der Variable auswahl switch (auswahl) { case 1: @@ -118,6 +119,9 @@ public class Menu { case 3: System.out.println("Buchstaben des längsten Wortes: " + an.laengstesWort()); break; + case 4: + System.out.println(an.leetspeakKonverter()); + break; default: exit = true; break; //Nicht zwingend notwendig diff --git a/src/com/structix/Menubuilder.java b/src/com/structix/Menubuilder.java index e5fabf7..86c5df0 100644 --- a/src/com/structix/Menubuilder.java +++ b/src/com/structix/Menubuilder.java @@ -5,6 +5,13 @@ import java.util.Scanner; /** * Created by structix on 15.05.16. */ + +/** + * Diese Klasse wird benötigt, um das Layout der Menüs zu generieren. + * Damit muss man sich nurnoch um die Funktionen hinter dem Layout kümmern + * und kann das Menü auch schnell erweitern oder umgestalten. + */ + public class Menubuilder { private String ueberschrift;