Wczytywanie słów z pliku, strumienie

Wczytywanie słów z pliku, strumienie
H5
  • Rejestracja:ponad 6 lat
  • Ostatnio:prawie 4 lata
  • Postów:66
0

Piszę program, który ma wczytywać dane z pliku i zliczać ile jest słów danej długości (np. dwa słowa długości 1, trzy długości 4 itp.). Używam metody next(), jednak w przypadku, kiedy następnym znakiem jest kropka, przecinek itp., jest on także wczytywany przez funkcję next(). W rezultacie mając np. zdanie "Dawno, dawno temu", pierwszy wyraz według programu ma 6 liter (zamiast 5), drugi i trzeci prawidłowo kolejno 5 i 4.
Jak rozwiązać ten problem? Mogę użyć jakiejś innej funkcji zamiast next() lub dodać jakiś warunek? Ale jaki?

Dodam, że w celu czytania z pliku używam
Scanner in = new Scanner(new BufferedReader(new FileReader("tekst.txt")));

Prosiłbym też o wytłumaczenie, dlaczego powyższa linijka wygląda właśnie tak, szczególnie dlaczego piszemy new BufferedReader(new FileReader("tekst.txt")) i jakie ma to znaczenie dla odczytu danych (znam ogólną teorię, ale trochę się w tym gubię, dlatego prosiłbym o łopatologiczne wytłumaczenie).

Z góry dziękuję za pomoc :)

KamilAdam
  • Rejestracja:ponad 6 lat
  • Ostatnio:11 dni
  • Lokalizacja:Silesia/Marki
  • Postów:5505
0

Rozwiązań jest kilka:

  1. Możesz spróbować użyć metody next(String pattern), tylko trzeba napisać dobre wyrażenie regularne
  2. Możesz zrezygnować z klasy Scanner, wczytawać całą linię i wyszukiwać słowa wyrażeniem regularnym
  3. Możesz zrezygnować z klasy Scanner i wyrażeń regularnych, Wczytywać całą linię i liczyć to na piechotę w pętli

Mama called me disappointment, Papa called me fat
Każdego eksperta można zastąpić backendowcem który ma się douczyć po godzinach. Tak zostałem ekspertem AI, Neo4j i Nest.js . Przez mianowanie
lion137
  • Rejestracja:ponad 8 lat
  • Ostatnio:około godziny
  • Postów:4946
0

Poczytaj sobie o tokenizacji tekstu.


H5
  • Rejestracja:ponad 6 lat
  • Ostatnio:prawie 4 lata
  • Postów:66
0

A w jaki sposób mogę wyszukać słowa wyrażeniem regularnym? Czytałem o tym i jedyne, co znalazłem, to szukanie słów rozpoczynających / kończących się na jakąś literę / cyfrę / znak.
Czy jest możliwe znalezienie słów, które np. kończą się na jakiś znak interpunkcyjny (jakikolwiek, bez podawania konkretnie jaki)?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.