Проверял на разных комбинациях слов и длинах слова. Валидатору всё равно не заходит ((
Подскажите что сделаю не так?
Если кратко, то читаю строку, для каждого слова из листа ищу и считаю повторение, по итогу если счётчик 2 то вывожу...
package com.javarush.task.task19.task1922;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
Ищем нужные строки
*/
public class Solution {
public static List<String> words = new ArrayList<String>();
static {
words.add("файл");
words.add("вид");
words.add("В");
}
public static void main(String[] args) {
BufferedReader reader = new BufferedReader( new InputStreamReader( System.in ) );
try {
FileReader fileReader = new FileReader( reader.readLine() );
BufferedReader bufferedReader = new BufferedReader( fileReader );
reader.close();
List<String> list = new ArrayList<>( );
while (bufferedReader.ready()){
int appearance = 0;
String currentLine = bufferedReader.readLine();
for (String word : words) {
Pattern currentPattern = Pattern.compile( "(?<=|\\s)" + word + "(?=\\s+|$|\\p{P})" );
Matcher currentMatcher = currentPattern.matcher(currentLine);
while (currentMatcher.find()){
currentMatcher.start();
appearance++;
}
}
if (appearance == 2){
System.out.println(currentLine);
}
list.add( bufferedReader.readLine() );
}
fileReader.close();
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}