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

  • 10
  • Недоступна
Считать с консоли имя файла. Файл содержит слова, разделенные знаками препинания. Вывести в консоль количество слов "world", которые встречаются в файле. Закрыть потоки.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (259)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Максим20 уровень, Черкассы
час назад
Интересно, если файл будет 10Гб... Тогда варианты с впихиванием всего файла в строку не годятся.. Надо искать частями или до первого знака препинания.
Максим20 уровень, Черкассы
час назад
Почему интересно не принимало следующее: split("\\s*[\\p{Punct\\n}]\\s*") - дополнительно на пробелы проверил на всякий случай.
Ivan Tyulpin20 уровень, Москва
3 августа, 01:49
решение в разы проще, если знаете как делать через matcher.find() - это регулярки в их первозданном виде) Вот ссылка на статью, по которой я учился
Nikita Kuznetsov24 уровень, Москва
18 июля, 11:45
Уловие надо дополнить в "Файл содержит слова, разделенные знаками препинания" надо дописать знаками препинания и пробелами.
16 июля, 19:36
Как я быстро создал строчный массив из слов)
String[] fileRead = new String(charBuff).split("\\W+");
Alexey Matias19 уровень, Санкт-Петербург
16 июля, 17:50
Решил двумя способами, ни один не приняли. Первый: только через FileReader побайтово с конвертацией байтов в чар. Ошибка компиляции на сервере ("incompatible types: possible lossy conversion from int to char."). Окей. Второй: уже через BufferedReader построково со сплитом по всем неВорлдам ([^world]). Все замечательно работает, валидатор пишет "Проверь, почему программа находит больше слов "world" чем есть в файле.". Но она не находит больше! Не понятнааа
Alexey Matias19 уровень, Санкт-Петербург
16 июля, 17:56
Но если сплит делать через "[^\\w]" и затем добавить счетчик и проверять на соответствие "world", то все пропускает. Валидатор...
Юрий25 уровень
4 июля, 07:32
Тут можно удобно тестить регулярные выражения, прежде чем ставить в код
Владимир20 уровень, Москва
3 июля, 10:40
"Файл содержит слова, разделенные знаками препинания." - похоже, что в понятие "знак препинания", по мнению авторов, входит всё, что угодно, кроме букв. >:(( В итоге решил, вообще не связываясь со строками, всё через ASCII.
Олег Ерёмичев23 уровень, Волгоград
26 июня, 18:06
Прокатило с первой попытки. Как многие предлагали, собрал файл в одну строку с проверкой принадлежности символов к буквам. Все не буквы заменил на пробелы. Поделил все split(" "). В цикле подсчитал количество "world".
Иван19 уровень, Москва
15 июня, 09:37
"Грязный" вариант для ленивых Для построчного чтения из файла BufferedReader fileReader = new BufferedReader(new FileReader(fileName)); Перебрать все строки и для каждой строки, разбить строку на массив myString.split("world").length - 1;
Hexronimo23 уровень
16 июня, 11:32
Да, но не на столько просто, потому что underworld - не должно подходить, World (с большими буквами) - должно, кроме того World может быть первым словом, так что regex придется подкрутить.