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 :)