Trzecie zadanie z nowego przedmiotu, Laboratorium HTML i Java brzmiało następująco:
Napisz w Javie program do analizy utworów literackich mistrzów pióra.
Program ma wczytać ze standardowego wejścia plik tekstowy (w zamyśle utwór jednego z wieszczów, na przykład pobrany z internetu), policzyć częstości występowania w nim poszczególnych słów i wypisać na standardowe wyjście n najczęściej występujących wyrazów wraz z liczbą wystąpień każdego z nich. Liczbę n należy pobrać z wiersza poleceń. Program wypisując słowo powinien podać jego formę (chodzi o użycie wielkich i małych liter, a nie o formę gramatyczną) najczęściej występującą w tekście.
Ponadto w kodzie źródłowym programu, w pliku z główną klasą należy zamieścić komentarz podający dla n=8 wynik działania programu dla tekstu "Pana Tadeusza" (tekst ten jest zamieszczony w Moodle'u).
Uwagi:
* Każde słowo należy wypisać w osobnym wierszu.
* Po każdym wypisanym słowie należy po spacji podać liczbę jego wystąpień.
* Słowa należy wypisać wg malejącej kolejności wystąpień w tekście (czyli jako pierwsze słowo należy podać to, które występuje najczęściej).
* Jeśli kilka słów ma tę samą częstość wystąpień, to ich wzajemna kolejność wypisywania jest obojętna.
* Jeśli jakiś utwór zawierałby mniej niż n różnych słów, to należy wypisać tyle słów, ile w utworze znaleziono.
* Przy liczeniu liczb wystąpień słów należy utożsamiać małe i wielkie litery (tzn. w tekście "Ale, ale, ale!" uznajemy, że słowo "ale" wystąpiło 3 razy).
* Przy wypisywaniu słów należy podać najczęściej występującą w tekście ich formę (tzn. dla tekstu "Ale, ale, ale!" należy wypisać postać "ale". Jeśli kilka postaci słowa występujących najczęściej ma jednakową liczbę wystąpień, można wybrać dowolną z nich (tzn. dla tekstu "Ale, ale!" można wypisać albo "Ale" albo "ale").
* Należy uwzględniać polskie litery (tzn. w napisie "Liście" jest jedno słowo składające się z sześciu znaków).
Wskazówki:
* Należy skorzystać z kolekcji.
* Należy używać kolekcji uogólnionych (generic), a nie surowych (raw).
* Do odczytywanie słów wygodnie użyć klasy Scanner. Do pobierania samych słów (tzn. bez kropek, przecinków itp.) z polskimi literami można użyć operacji
skaner.useDelimiter("[^a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ]+");
A oto rozwiązanie:
Zadanie 3