Считаем слово

  • 10
  • Недоступна
Считать с консоли имя файла. Файл содержит слова, разделенные знаками препинания. Вывести в консоль количество слов "world", которые встречаются в файле. Закрыть потоки.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (206)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизоваться
Mike Dobrovitsky20 уровень, Москва
9 февраля, 22:13
Scanner scan = new Scanner(fileReader); scan.useDelimiter("[.,!?;'`\":\\s\\n]"); а про пробелы (\\s) и переносы (\\n) ни слова в условии.
Даниил23 уровень
28 января, 10:35
Для таких же тугодумов как я - обязательно учтите что текст в файле может иметь переносы строки вместо знаков пунктуации (или может это тоже знак пунктуации, но я плох в этих всех терминах).
Павел20 уровень, Москва
15 января, 15:26
С помощью коментов нашел подходящую регулярку ("\\W") Есть у кого инфа по этим регуркам? Скиньте плиз а то какие то одни затычки...
Bahis36 уровень, Москва
23 января, 20:44
гугли regex. в нете полно. даже на javarush есть.
Павел20 уровень, Москва
24 января, 10:42
Да, уже нашел, даже книжку очень хорошую "Регулярные выражения" сборник рецептов
Ian24 уровень, Екатеринбург
12 января, 16:17
Напишите в условии что например: , world! - засчитывается. Тут между запятой и "w" пробел! т.е. пробелы вообще не считаются, в условии - ни слова. Прошу исправить.
Дворник20 уровень
8 января, 14:11
Минус задаче. Не понятно, есть ли разрывы, считает ли программа знаком препинания пробел. Могут ли быть 2 пробела и т. д. Не понятно почему "worlds" считать не надо. В нём же содержится world. Сплошная разгадка валидатора.
Pavlic Morozov (pashok09i)24 уровень, Екатеринбург
14 января, 17:47
программа считает словом все символы между двумя знаками препинания, другой вопрос почему она считает пробел знаком препинания
Pavlic Morozov (pashok09i)24 уровень, Екатеринбург
14 января, 17:50
моя программа, которую схавал валидатор, если идут два символа препинания подряд считала пустую строку и соответственно не брала ее в счет
Вагиф23 уровень, Санкт-Петербург
25 ноября 2018, 08:44
да, не сразу решил, помог:
Pattern pp = Pattern.compile("\\bworld\\b")
Дмитрий28 уровень
24 ноября 2018, 09:36
Надо понимать, что нужно посчитать именно количество слов, а не просто последовательностей символов. Скажем worlds не должно засчитываться.
Vadim Krant22 уровень, Москва
11 ноября 2018, 18:25
Многих бомбит на тему того, что задача якобы не верно составлена, но внимательно читаем условие Файл содержит слова, разделенные знаками препинания. А потом гуглим какие знаки препинания существуют. По задаче, задача опять же простая, если голову включить. Многие решают здесь через регулярки. Я лично не знаю что это такое, и пока бы не советовал бежать впереди паровозного дыма. Разработчики курса явно просят чтобы мы решали такое в лоб, простыми и примитивными решениям которые заставляют нас ДУМАТЬ. Небольшая подсказка по традиционному решению задачи.
String symbol = "QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm";
String temp_read = String.valueOf((char)fileReader.read());
if (symbol.contains(temp_read))
    folder += temp_read;
p.s. я тоже с наскока решил что речь идёт о запятых, но потом включил голову. изи, синк эбаут ит.
fox296520 уровень, Самара
26 декабря 2018, 11:16
Не проще ли тогда?: char temp_read = (char)fileReader.read(); if ( Character.isLetter(temp_read) ) folder +=temp_read; А то так для каждого языка придется String symbol создавать.
Pavlic Morozov (pashok09i)24 уровень, Екатеринбург
14 января, 17:44
пробел по вашему считается знаком препинания? У валидатора считается
Vadim Krant22 уровень, Москва
17 января, 22:55
пробел, на мой взгляд, самый главный инструмент для разделения слов
DancingShaman23 уровень
11 ноября 2018, 16:24
1) Очередная задача, которая неправильно поставлена, но мне повезло, что я выучил регулярки и теперь в ус не дую. 2) Решил через эту регулярку [\p{Punct}\s]|^)world([\p{Punct}\s]|$ и получением из всего текста из ОДНОЙ СТРОКИ. 3) То есть, нам нужно найти слово "world", которое может быть окружено всеми возможными знаками препинания, либо символами табуляции, или вместо этих двух требований символом начала строки слева от искомого слова и символом конца строки справа от искомого слова, тогда регулярка работает как надо. 3) Надеюсь, вы что-нибудь поняли из того, что я Вам написал, потому что я сам нихрена не поняли из того, что пытался сказать.
Сергей36 уровень, Нижний Новгород
11 ноября 2018, 17:37
Pattern pattern = Pattern.compile("\\bworld\\b");
\\b - это граница слова)
DancingShaman23 уровень
11 ноября 2018, 18:56
И права, работает так-же, ну да ладно, изобрёл очередной велосипед, не проблема :)
Anastasiia20 уровень
12 ноября 2018, 03:26
интересно, почему валидатор не пропустил так - .compile("world");
DancingShaman23 уровень
12 ноября 2018, 09:38
Потому что в такой строке "world blabla world123" - вхождения будет два, а нужно, чтобы нашло только первое вхождение.
Сергей36 уровень, Нижний Новгород
12 ноября 2018, 12:25
Вообще велосипеды писать иногда очень полезно, помогает в теме разобраться.
Anastasiia20 уровень
12 ноября 2018, 15:14
а, если так, то да, почему-то мне было неочевидно, что должно встречаться world в чистом виде, теперь понятно почему не принимал) спасибо!
Gogogo31 уровень
27 октября 2018, 20:28
Неточное условие: "Файл содержит слова, разделенные знаками препинания". На самом деле помимо слов и знаков препинания файл содержит разрывы строк.
Gagarin28 уровень, Санкт-Петербург
1 ноября 2018, 13:51
Зачем вы впихнули в файл разрывы строк, когда по условию этого не было?
Gogogo31 уровень
2 ноября 2018, 15:33
Я не впихивал. Я не рассчитывал на то, что они есть в исходном файле.