Замена чисел

  • 20
  • Недоступна
В статическом блоке инициализируйте словарь map парами [число-слово] от 0 до 12 включительно. Считайте с консоли имя и содержимое файла. Замените все числа на слова используя словарь map. После этого выведите результат на экран и закройте потоки.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (310)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Руслан System Administrator в court
undefined, 21:35
Через РЕГУЛЯРКИ не решить -- (Валидатор не примет) -- Валидатор стоит на Java8 а РЕГУЛЯРКА идет с Java15. Так что ребятки будем дерзать дальше.
Murad
Уровень 20, Москва, Россия
8 сентября, 11:40
3-4 решения сделал и ни одно не проходит проверку 6 пункта. Не понимаю что не нравится и как правильно
Виноградина
Уровень 32, Berkeley, United States
16 сентября, 02:57
попробуй отправить свое решение в помощь сообщества. Там помогут)) сюда и жми кнопку задать вопрос
Crazy666God
Уровень 35, Белгород
2 сентября, 09:46
Может кто подскажет в чем разница того что я в статическом блоке заполнял мапу начиная от 0 - 12, валидатор выдавал ошибку, а добавил с 12 - 0 в таком порядке сразу засчитал все верно, в чем фишка? это валидатор придрался или все таки есть разница?
Alexandr Vlasov
Уровень 22, Москва
8 сентября, 05:16
Скорее всего вы просто в первом разе допустили орфографическую ошибку, от 0 до 12 отлично принимает
Alexandr Vlasov
Уровень 22, Москва
24 августа, 15:54
Да, подвох в этой задаче, что разбивать пробелами дает неверный результат, а разбивать \b всё ок. Для тех кто мучается с регулярками, получив число, проверьте не null ли у вас в map
Ckarlettt
Уровень 32, Vilnius, Литва
7 сентября, 18:52
Спасибо!!! Долго бы я еще мучилась)))
Максим Глотов
Уровень 33, Новосибирск
21 августа, 12:25
строка = строка.заменитьВсе("\\b" + цифрами + "\\b", буквами);
Руслан
Уровень 23, Стерлитамак, Россия
10 августа, 11:52
2 дня решал. регулярые выражения используйте на буквы s.matches("[a-zA-Zа-яА-Я]") - валидатор примет
Yarik Таксист в Яндекс.Такси
8 августа, 07:23
Регулярки "\\b" + "\\b" даже не думал что так можно делать. Спасибо тем кто задачу придумал и валидатору что не пропускал.
Евгений Королёв
Уровень 26, Санкт-Петербург, Россия
31 июля, 13:08
1 Считываем строку и разбиваем ее на слова, в качестве разделителя берем пробел. 2 Каждое слово сравниваем с шаблоном (matches(regex)). В шаблоне может быть от 1 до 2 цифровых символов и может присутствовать символ пунктуации. Подробно про Регулярные выражения в Java. 2.1 Если есть совпадение с шаблоном, то получаем значение их map по индексу, полученному из слова, в котором заменяем все знаки пунктуации на пустую строку (parseInt(), replaceAll()). К значению из map прибавляем знак пунктуации, полученный из слова, путем замены всех цифр на пустые строчки, и выводим полученное слово в консоль прибавив пробел. 2.2 В противном случае выводим слово без изменений и добавляем пробел. Все вышеперечисленные действия повторяем в цикле while (reader.ready()).
Morak Dim
Уровень 28, Благовещенск, Россия
10 августа, 14:00
1 да 2 да 2.1 ну тут чутка по-другому подошел. Не брал значение из map добовляя к нему пунктуацию и выводя в консоль в итоге, а заменяя в строке "цифры на значение из map по ключу этих цифр" На примере слова длиною в 3 символа (P.S. для нас это 11. 12. 11, 12, и т.п.)
if (lengthOfElement == 3 && element.matches("\\d{2}(\\p{Punct})") && map.containsKey(Integer.parseInt(element.substring(0, 2)))) {
                element = element.replaceAll("\\d{2}", map.get(Integer.parseInt(element.substring(0, 2))));
            }
2.2 да
Vladimir
Уровень 39, Тольятти, Россия
30 июля, 17:36
Решил задачу через Patter patter = Parse.compile("\\b(?<dight>\\d+)\\b) Далее кормил ему строку, если там есть совпадение - то replaceFirst. Протестировал на всех возможных вариантах - у меня все работает как нужно. Но Валидатор упрямо слал лесом, скопировал решение: результат в консоли в без изменений. (то есть через Pattern я таки верно решил, да не так красиво как тут, зато если в строке нет цифр - она сразу идет на выход).
Саня
Уровень 30, Москва
7 июля, 17:40
всё, что нужно знать про регулярку \b -- это то, что она нулевой длины