package com.javarush.test.level19.lesson10.home04;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.StringTokenizer;
/* Ищем нужные строки
Считать с консоли имя файла.
Вывести в консоль все строки из файла, которые содержат всего 2 слова из списка words
Закрыть потоки. Не использовать try-with-resources
Пример: words содержит слова А, Б, В
Строки:
В Б А Д //3 слова из words, не подходит
Д А Д //1 слово из words, не подходит
Д А Б Д //2 слова - подходит, выводим
*/
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 {
Scanner scanner = new Scanner(System.in);
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(scanner.nextLine()), StandardCharsets.UTF_8));
String line;
while ((line = reader.readLine()) != null) {
StringTokenizer stringTokenizer = new StringTokenizer(line, " ,:;\"?!");
int i = 0;
while(stringTokenizer.hasMoreTokens()) {
String a = stringTokenizer.nextToken();
for (String word : words) {
if (a.equals(word)) ++i;
}
}
if (i == 2) System.out.println(line);
}
reader.close();
scanner.close();
}
}
Leave A Comment