2021-10-28 17:16:26 +02:00
import java.io.File ;
2019-09-12 08:04:33 +02:00
import java.util.HashMap ;
2021-10-28 17:16:26 +02:00
import java.util.Iterator ;
import java.util.Locale ;
2019-09-12 08:04:33 +02:00
import java.util.Map ;
2017-09-17 17:06:36 +02:00
/ * *
* Zaehlt die Anzahl Vorkommnisse von Woertern ueber mehrere Zeichenketten .
* Es lassen sich eine beliebige Anzahl an Zeichenketten uebergeben . Die
* Statistik wird fortlaufend gefuehrt . Die Wortzaehlung laesst sich jederzeit
* ausgeben . Die Satzeichen . , ? ! " : ; werden entfernt. Alle Buchstaben
* werden in Kleinbuchstaben umgewandelt um beispielsweise das Wort ' die '
* inmitten eines Satzes und das Wort ' Die ' am Anfang eines Satzes als gleiches
* Wort werten zu koennen .
2019-09-12 08:04:33 +02:00
*
2017-09-17 17:06:36 +02:00
* @version 1 . 0
* @author XXXX
* /
public class Worthaeufigkeitsanalyse {
2019-09-12 08:04:33 +02:00
// Anstelle der Map dürfen Sie auch andere Datentypen verwenden. Testen Sie auch TreeMap.
private Map < String , Integer > woerterHaeufigkeit = new HashMap < > ( ) ;
2021-10-28 17:16:26 +02:00
private Map < String , Integer > zeichenHaeufigkeit = new HashMap < > ( ) ;
private String text = new String ( ) ;
2019-09-12 08:04:33 +02:00
/ * *
* Nimmt die uebergebene Zeichenkette in die Worthaeufigkeitsanalyse auf .
*
* @param text zu verarbeitende Zeichenkette
* /
public void verarbeiteText ( String text ) {
2021-10-28 17:16:26 +02:00
2019-09-12 08:04:33 +02:00
// TODO Ihre Implementation
2021-10-28 17:16:26 +02:00
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 ) ;
}
}
2019-09-12 08:04:33 +02:00
}
2017-09-17 17:06:36 +02:00
2019-09-12 08:04:33 +02:00
/ * *
* Ausgabe der Worthaeufigkeitsanalyse auf der Konsole .
* /
public void druckeStatistik ( ) {
2021-10-28 17:16:26 +02:00
System . out . println ( " Worthäufigkeiten: " ) ;
2019-09-12 08:04:33 +02:00
for ( Map . Entry < String , Integer > wortHaeufigkeit : woerterHaeufigkeit . entrySet ( ) ) {
System . out . printf ( " %3d %-40s%n " , wortHaeufigkeit . getValue ( ) , wortHaeufigkeit . getKey ( ) ) ;
}
2021-10-28 17:16:26 +02:00
System . out . println ( " Zeichenhäufigkeiten: " ) ;
for ( Map . Entry < String , Integer > zeichenHaeufigkeit : zeichenHaeufigkeit . entrySet ( ) ) {
System . out . printf ( " %3d %-40s%n " , zeichenHaeufigkeit . getValue ( ) , zeichenHaeufigkeit . getKey ( ) ) ;
}
2019-09-12 08:04:33 +02:00
}
2017-09-17 17:06:36 +02:00
2021-10-28 17:16:26 +02:00
2019-09-12 08:04:33 +02:00
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 ( ) ;
2021-10-28 17:16:26 +02:00
2019-09-12 08:04:33 +02:00
}
2021-10-28 17:16:26 +02:00
2019-09-12 08:04:33 +02:00
}