Ищем нужные строки

  • 10
  • Недоступна
Давайте найдем нужные нам строки, и вот что мы должны для этого сделать. Считать с консоли имя файла. Вывести в консоль все строки из файла, которые содержат всего 2 слова из списка words. Закрыть потоки.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (97)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизоваться
NazFarr26 уровень
28 августа, 13:40
с первой попытки ??? неужели??
Andry Max35 уровень, Минск
11 августа, 22:39
потратил первую попытку чтобы узнать что список words может быть любой длины, а я сделал конкретно под этот сразу( ну ладно, после предыдущих задач, которые были либо сложные либо валидатор ********** эта расслабляет.
Роман20 уровень, Харьков
2 августа, 17:49
а я, по старинке, счетчиком)))
while (fr.ready()) {
    String str = fr.readLine();
    List<String> list = new ArrayList<>(Arrays.asList(str.split(" ")));
    int count = 0;
    for (String s : words) count += Collections.frequency(list, s);
    if (count == 2) System.out.println(str);
}
Артем36 уровень, Москва
10 августа, 08:41
Можно еще более олдскульно )
if (words.contains(str)) counter++;
NazFarr26 уровень
28 августа, 13:47
я так и сделал. а че я уже старый? я ж еще начинаю свои первые шаги... уже старый??))))
Taras Kutselya20 уровень
3 ноября, 09:32
По логике валидатор это не пропустит. Если str будет частью слова, contains(str) все равно вернет true.
Taras Kutselya20 уровень
3 ноября, 10:09
String reg = "\\p{all}*" + word + "(\\s|\\p{Punct}|$)+\\p{all}*";
if (line.matches(reg)) count++;
У меня так получилось. Если кто придумает как упростить регулярку напишите в комментах.
Диего26 уровень, Новосибирск
2 июля, 21:57
Файл для проверки.
файл вид В
файл вид
урна тополь файл
кракен вишня птица параход
бритва монитор В вид
файл
файлфайл
вид
вид файл
Вывод:
файл вид
бритва монитор В вид
вид файл
Vitaly Khan23 уровень
12 июля, 22:06
у меня программа выводит:  файл вид В файл вид бритва монитор В вид вид файл (в начале первой строки некий символ в виде маленькой точки. здесь в комментах он не отображается) кто-нибудь пояснит, откуда берется этот невидимый символ в начале текстового файла? не могу от него избавиться... ведь из-за него первая строка обрабатывается некорректно.
Диего26 уровень, Новосибирск
13 июля, 09:12
Это zero width no-break space. Решение проблемы гуглится по запросу
маркер последовательности байтов
Victoria Sedletskaya22 уровень, Одесса
5 ноября, 16:03
Помогло пересохранить файл в кодировке UTF-8 без BOM (это спец символ в начале файла)
item24 уровень
2 июля, 10:17
Хотябы одно слово из списка words должно встречаться дважды. Проверяем по equals, бьем строки split(" ")
Юрий Гончаров20 уровень
27 июня, 23:14
ВАЖНО - слово из спика не должно быть частью слова в строке. Кому сложно понять, вот рабочий вариант
Ярослав35 уровень
23 июня, 13:29
Вы решили задачу лучше, чем 0% учеников. Зато получил бесценные знания :))
Артем28 уровень, Минск
28 мая, 17:55
Долго мучался с кодировкой, просрал несколько попыток, в итоге все начало читать нормально, когда везде выставил windows-1251
Алексей Горяйнов20 уровень, Москва
3 июля, 14:15
очень рекомендую Notepad++ - там очень просто устанавливать любые кодировки и можно видеть скрытые символы, что иногда помогает в вопросе: "@##%%, должно же работать!?"
Андрей Толкачев40 уровень, Москва
9 апреля, 18:03
С регуляркой "\W", убирающей все, кроме слов, не проходит, прошло с обычным пробелом. Можно обойтись без коллекций, просто 2 цикла перебора элементов внутри while.
Олисса23 уровень, Москва
1 апреля, 18:33
ну наконец то простая задача без регулярок. Выдохнула...