Разные методы для разных типов

  • 16
  • Недоступна
Итак, полиморфизм. Вы о нём ещё не забыли? Тогда решаем следующую задачку: считываем с консоли данные, пока не будет введено слово "exit". Для каждого значения, кроме "exit", вызываем метод print, какой именно принт — зависит от значения. Например, если значение содержит точку, то вызываем print для Double, а если это число от 0 до 128 — то для short.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (530)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Viktor QA Automation Engineer
6 июня, 08:08
Добрый день. Подскажите, пожалуйста, что не учёл? Код работает с различными вариациями входных данных, но валидатор не пропускает по 4, 5, 6 пункту.
Blynchik Работает в Pegas Touristik
2 июня, 06:58
Ребятки, подсказка: если строка не относится к числам, то print(str) выполняется в блоке catch
Luka Biba
Уровень 26, Москва
29 мая, 19:22
Я впервые узнал что parse можно делать не только с Integer🤯
comrade_b
Уровень 26, Амстердам, Нидерланды
26 мая, 08:43
Если вы попытались предусмотреть паттерны или делаете проверки на то, является ли строка числом, бросайте, удаляйте: валидатор не примет ваше решение. Я изначально сделал все чеки, чтобы не было никаких экспешенов и в отдельные проверки вставил проверки как по условию. Код работал верно, все строки типа "1.ы" проверял корректно и не было никаких экспешенов. Переменные тоже переводились в нужный тип с вызовом метода соответствующего типа переменной. Но валидатор не принял. Валидатор ждет решение, что вы через трайкеч будете пытаться парсить все, и если оно не парсится, то это строка и в кэтче будете распечатывать не стактрейс, а саму строку. Оно конечно интересно. Я про решение. Но по мне, так это очень кривое решение, когда вы специально загоняете код в эксепшены.
milyasow
Уровень 30, Москва, Russian Federation
15 мая, 19:40
Интересная схема с выводом значений, неподходящих для парсера, через отлов Exception'ов. Сам бы никогда не додумался.
Дмитрий Щебрюк
Уровень 23, Москва, Russian Federation
19 мая, 04:01
Костыль и велосипед!
Bigborg Безработный в /на мешке картошки
1 мая, 14:13
Решил вот так, валидатор не принимает, но это ладно Самое странное, что при вводе, например, -1200, вызывается метод print(Integer), но если ввести -120000, начинает вызываться print(String) Не могу понять, почему так
Андрей
Уровень 18
9 мая, 09:57
Это из за того что после Double идет Short , а в Short-е -32,768 .. 32,767 числа, вот и ловит исключения.
Buenos
Уровень 33, Минск, Беларусь
12 мая, 06:06
на дабле не проканает, например, "f.nk"
Anastasiia
Уровень 21, Германия
7 июня, 07:56
Переменную String лучше объявлять вне цикла, ибо при каждой итерации будет создаваться новая переменная, что довольно быстро память кушает. В данной задачке это не будет так критично, так как вариантов для итерации не так много, но в других случаях - это будет просто довольно неэффективно
Dmytro
Уровень 24, Киев, Украина
13 апреля, 12:49
Очень крутая задача. Перечитал кучу методов для проверки String на число, испытал супер крутое чувство, когда решил задание наипростейшим способом.
p3rsonal
Уровень 35, Riga, Latvia
5 апреля, 06:55
Регекс для Double "[-+]?([0-9]*\\.[0-9]+|[0-9]+)". Регекc для Integer "-?(0|[1-9]\\d*)".
Igor Petrashevsky
Уровень 34
9 мая, 17:38
а потом удивляются почему быстродействия не хватает и откуда парниковый эффект на планете )
Buenos
Уровень 33, Минск, Беларусь
12 мая, 06:06
вот жеж, опять про минусы забыл )))
Anastasiia
Уровень 21, Германия
7 июня, 08:01
В случае с Double число может передаваться с мантиссой, т.е. через буковку е (Е). И это будет по прежнему double, поэтому с регэксом не самый лучший вариант
Олег Мартынов
Уровень 30, Москва, Россия
30 марта, 19:37
принципиально не принимается решение реализованное через Scanner
Максим
Уровень 30, Саратов, Russian Federation
1 апреля, 17:54
Что именно не получается со Scanner? Я им пользовался для чтения строки с консоли, все ок. А для разбора строк - valueof и ловить исключения.
Lone_Hunter
Уровень 36, Краснодар, Russian Federation
4 апреля, 08:12
Ты корректно обработал значения типа 3.0E13, 3Е13(И подобные)??
Дмитрий Щебрюк
Уровень 23, Москва, Russian Federation
19 мая, 04:04
В случае ввода пустой строки у сканера не срабатывает .hasNextLine() в этом и проблема.
Anonymous #2903643
Уровень 29, Russian Federation
26 марта, 19:31
Не пойму, почему валидатор не принимает решение, реализованное через print(Short.parseShort(s))? Ну да, в "правильном" решении более корректный алгоритм. А если я - индус и пишу костылями? 😂
Дмитрий Щебрюк
Уровень 23, Москва, Russian Federation
19 мая, 04:05
корректный алгоритм через исключения? Мне так не показалось.