Объясните как работает механизм кода

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 {
    String fileout;
    try(BufferedReader buff = new BufferedReader(new InputStreamReader(System.in))){
        fileout = buff.readLine();
    }
    try(BufferedReader file = new BufferedReader(new FileReader(fileout))){
        while(file.ready()){
            int cout = 0;
            String line = file.readLine();
            String[] str = line.split(" ");
            for(String m : str){
                for(String k: words){
                    if(m.equals(k)){
                        cout++;
                    }
                }
            }
            if (cout == 2){
               System.out.println(line);
            }
        }
    }
}
}

Задача: вывести в консоль строки(из файла) в которых есть слова из массива words. Как работает код в середине while. Объясните пожалуйста. Я не могу понять как в if(cout == 2 ) выводятся именно те строки в которых есть слова из words.


Ответы (1 шт):

Автор решения: Barmaley
  1. Читаем строку
  2. Строку разбиваем на слова (маркер разделителя слова пробел) - split(" ")
  3. В цикле проходим все слова
  4. Каждое слово проверяем на совпадения из массива words
  5. Если есть 2 попадания - выводим на печать строку
→ Ссылка