Собственно, я смотрю, тут у большинства такая проблема висела, но похожего на моё решение не вижу. Валидатор выдаёт:
"Проверь, почему программа находит больше слов "world" чем есть в файле." при этом вывод правильный
package com.javarush.task.task19.task1907;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.StringBuilder;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
Считаем слово
*/
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String filePath1 = reader.readLine();
reader.close();
int counter=0;
int data;
StringBuilder sb = new StringBuilder ("");
FileReader fileReader = new FileReader(filePath1);
while (fileReader.ready()) //пока есть непрочитанные байты в потоке ввода
{
data = fileReader.read(); //читаем один символ (char будет расширен до int)
sb.append((char)data);
}
fileReader.close();
String result = sb.toString();
Pattern pattern = Pattern.compile("world+");
Matcher matcher = pattern.matcher(result);
while (matcher.find()) {
int start=matcher.start();
int end=matcher.end();
counter= counter+1;
//System.out.println(result.substring(start,end));
}
System.out.println(counter);
}
}
(\b|^)(world)((\p{P})|(\b))
(\b|^)(world)(\b) или просто (\b)(world)(\b)
