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

  • 8
  • Недоступна
Итак, полиморфизм. Вы о нём ещё не забыли? Тогда решаем следующую задачку: считываем с консоли данные, пока не будет введено слово "exit". Для каждого значения, кроме "exit", вызываем метод print, какой именно принт — зависит от значения. Например, если значение содержит точку, то вызываем print для Double, а если это число от 0 до 128 — то для short.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (270)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Kubik_1315 уровень, Москва
12 часов назад
Вы решили задачу лучше, чем 60% учеников. Вам удалось ее решить с 1 попытки. Среднее количество попыток для этой задачи 3.14. Всего эту задачу решили 20655 учеников. Отличная задачка, мне понравилась. Через regex и if'ы решилась на ура минут за 30 )
Edem Seitnebi16 уровень
вчера, 14:32
Задача больше похожа на борьбу с валидатором, дико раздражает, решил не тратить время и идти учить дальше, потому что этот "подгон" под условия занимает слишком много времени
Dan Banan15 уровень, Санкт-Петербург
позавчера, 17:53
Чуваки, может кто-то объяснить почему если не перехватывать исключение, а использовать только блок finally (без catch), то программа выполняется 2 раза что-ли, или выводится два раза?
LeMeldonium 16 уровень, Москва
позавчера, 11:36
Ладно, эта задача была интересная. Подглядел только входные параметры. Почему-то думал что надо Object приводить, а не строку. с 1 попытки
Max Serebrennykov16 уровень, Киев
среда, 13:22
получил большое удовольствие когда все скомпилировалось и заработало )
AndrewGloom15 уровень
понедельник, 13:52
Обычная задача, решается без регулярных выражений. Сделал таким образом: в цикле получал строку, если она содержала "exit" закрывал ридер и выходил из цикла, если нет, то в блоке try её пытался распарсить, в случае неудачи вызывал метод с параметром String передавая её в него, если она содержала точку и распарсилась, то вызывал метод с Double, если точки не было, то уже проверял под какие условия подходит число и вызывал соответствующий метод, приводя к нужному типу.
mike19 уровень, Киев
воскресенье, 10:13
Не нужны регульрные выражения.Задача в пару строчек решетс через try...catch 1. Если содержит точку пробуем парсить через дабл и выводим знаение, в catch блоке выводим через стринг 2. В другом случае пробуем парсить через Integer. Делаем проверку на short и выводим в соответствующем методе. В Catch блоке опять віводим через стринг.
Дмитрий Чесноков16 уровень, Санкт-Петербург
16 января, 14:49
Задача отличная!! Несколько дней думал как решить. И наконец победа - "Философия Java" подсказала решение. Оказывается все просто) REGEX вам в помощь)
Дмитрий Чаруйский18 уровень, Санкт-Петербург
12 января, 19:42
Много в комментариях пишут про регулярные выражения, но логичнее всего, что мы до них не доходили, а значит и без них можно. А то прочитал две статьи, аж мозг вскипел (много инфы). Здесь достаточно соблюсти все пункты условий в точности (на всяк последовательность условий сохраните if else) и сделать один метод дополнительный на проверку числа. И не забыть, что содержание точки далее два варианта нам даёт: 1) 1.5 - который парсится в try и принтует Double; 2) 1.5x - который не парсится в catch и принтует String; На этом затупил, вдруг такая же ситуация будет. Аналогичная проверка на число в отдельном методе try - true, catch - false. Пытался долго решить, но со второй попытки.
Александр16 уровень, Екатеринбург
14 января, 09:04
по второму пункту - в блоке catch нужно реализовать принт всего, что не запарсилось и не равно exit, соответственно в блок try - условие по "." , затем по поиску шортов (парсил в Дабл и проверял условие от 0 до 128)в принте парсинг в Дабл и приведение шорт и в последнем элсе парсинг Дабл с приведением (инт) без условий.
Сабир20 уровень
11 января, 08:05
На всякий случай напишите отдельные методы isDouble и isInteger в которые вынесите отлов исключений с не правильным форматированием. А потом станет на много легче составить блок с условиями по ТЗ