Отказывается принимать решение, но ведь чарсет устанавливается для того, чтобы считывать русский текст =/ кто-то сталкивался с подобным?
package com.javarush.task.task19.task1922;
import java.io.*;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/*
Ищем нужные строки
*/
public class Solution {
public static List<String> words = new ArrayList<String>();
static {
words.add("файл");
words.add("вид");
words.add("В");
}
public static void main(String[] args) throws IOException{
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String path = bufferedReader.readLine();
BufferedReader br = new BufferedReader(new FileReader(path));
Set<String> set = new HashSet<>();
while (br.ready()) {
//читаем строку из файла
String str = br.readLine();
int i = 0;
//сравниваем ключевые слова со строкой
for (String s : words) {
if (str.contains(" " + s + " ") || str.startsWith(s + " ") || str.endsWith(" " + s)) {
i++;}
if (i == 2) {
set.add(str);
break;}
}
}
for (String s: set){
System.out.println(s);
}
bufferedReader.close();
br.close();
}
}
/*
Ищем нужные строки
Считать с консоли имя файла.
Вывести в консоль все строки из файла, которые содержат всего 2 слова из списка words.
Закрыть потоки.
Пример:
words содержит слова А, Б, В (количество слов в списке words может быть любым).
Строки:
В Б А Д //3 слова из words, не подходит
А Б А Д //3 слова из words, не подходит
Д А Д //1 слово из words, не подходит
Д А Б Д //2 слова - подходит, выводим
Д А А Д //2 слова - подходит, выводим
Requirements:
1. Класс Solution должен содержать публичное статическое поле words типа List<String>, которое должно быть сразу проинициализировано.
2. Класс Solution должен содержать статический блок, в котором добавляются три или больше слов в список words.
3. Программа должна считывать имя файла с консоли (используй BufferedReader).
4. BufferedReader для считывания данных с консоли должен быть закрыт.
5. Программа должна считывать содержимое файла (используй FileReader).
6. Поток чтения из файла (FileReader) должен быть закрыт.
7. Программа должна выводить в консоль все строки из файла, которые содержат всего 2 слова из списка words.*/