Lab HTML i JAVA zadanie 3

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

Leave a Reply