e-olymp 912. Количество предложений

Условие задачи

Задача взята с сайта e-olymp

Определить количество предложений в заданном фрагменте текста на английском языке, количество символов в котором не превышает 250. Гарантируется, что в тексте отсутствуют тире, дефисы, цифры и числа.

Тесты

Входные данные: строка — фрагмент текста

Выходные данные: количество предложений в заданной строке

Входные данные Выходные данные
1 Hello World! 1
2 Don’t fall in love with programming languages: they hurt 0
3 Is this a string!? This string… 2
4 Winter. Winter? Winter! 3

Код

Код доступен на ideone

Результаты проверки доступны на e-olymp

Пояснение

Для хранения заданной строки будем использовать переменную  string типа  String, которая будет проинициализирована значением из стандартного потока ввода, а для хранения результата — переменную sentenceCount  типа int , которую проинициализируем числом 0. Переменные объявляются в начале программы.

Каждое предложение может заканчиваться точкой, восклицательным знаком или вопросительным знаком, или же комбинацией этих символов (например, многоточием). Для анализа строки воспользуемся средствами для работы с регулярными выражениями. Для хранения шаблона, по которому будет производиться поиск, используется класс  Pattern, переменной типа которого присваивается шаблон, получаемый из строки-регулярного выражения с помощью статического метода этого класса Pattern.compile() . В данном случае переменная  pattern инициализируется шаблоном, получаемым из регулярного выражения [.!?]+, которое соответствует условиям задачи

Для того, чтобы произвести сравнение строки с шаблоном, используется класс  Matcher, переменной типа которого нужно присвоить возвращаямое значение метода  match() класса Pattern , который принимает строку. Для подсчета количества предложений воспользуемся методом find() класса  Matcher, который проверяет, есть ли далее в данной строке подстрока, соответствующая заданному шаблону, и возвращает  true , если подстрока найдена, или  false , если нет. Подсчет количества предложений производится путем вызова данного метода в цикле до тих пор, пока он не вернет  false — результатом подсчета будет количество итераций цикла.

Результат работы программы — вывод значения переменной sentenceCount.