Задачу решил после многократной компиляции на тестовом файле
Но не могу понять зачем в этой строке кода мы используем оператор приведения типа к типу char.
if(String.valueOf((char)reader.read()).matches("[a-zA-z]"))
Только с его использованием выдается верное количество английских букв из тестового файла, без него выдаваемое количество - 0.
Подскажите пожалуйста, зачем здесь использовать оператор приведения к типу char, ведь метод read() и так считывает символы??