arteqrt
@arteqrt
Почти не начинающий програмист

Почему условия поиска забирает выводимый результат?

Есть вот такой небольшой код :

if(newMatcher.find()) {
System.out.println("Введите текст в котором хотите совершить поиск : ");

        Scanner newScaner = new Scanner(System.in);
        String str = newScaner.nextLine();

        String text = new String(str);



        System.out.println("Теперь введите слово, которое хотите найти");

        Scanner newScaner2 = new Scanner(System.in);
        String str2 = newScaner.nextLine();

        Pattern newPattern = Pattern.compile(str2);
        Matcher newMatcher = newPattern.matcher(text);

        if(newMatcher.find()) {
            while(newMatcher.find()) {
                System.out.println(newMatcher.group());
            }
        }else {
            System.out.println("Нет совпадений!");
        }


Почему, когда в тексте есть 3 слова, которые должна найти и вывести на экран программа, она выводит на одно меньше?

Этому способствует завернутый while в if, Почему так работает? Ведь без if выводит все 3.
  • Вопрос задан
  • 58 просмотров
Решения вопроса 1
потому что каждый вызов find()перемещает его с текущего на следующее совпадение :
find the first, and then for each subsequent call to find() it will move to the next match.
поэтому findдля while а в if обычто используется matches()
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы