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

  • 8
  • Недоступна
Итак, полиморфизм. Вы о нём ещё не забыли? Тогда решаем следующую задачку: считываем с консоли данные, пока не будет введено слово "exit". Для каждого значения, кроме "exit", вызываем метод print, какой именно принт — зависит от значения. Например, если значение содержит точку, то вызываем print для Double, а если это число от 0 до 128 — то для short.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (156)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Семён19 уровень, Екатеринбург
8 апреля, 16:14
Я создал 2 boolean метода, которые проверяют является ли строка целым числом и является ли строка дробным числом. Проверка в методах делается путем захвата исключения NumberFormatException - возвращает false, если был такой захват. Ну и потом этими методами проверял является ли строка целым числом либо дробным числом.
Viktor 17 уровень
3 апреля, 15:50
можно парсить в Number а потом уже танцевать вокруг, прибауток с точкой и диапазонов..
Number n;
n = NumberFormat.getInstance().parse(str);
кстати по условию если 1234. то все равно нужно переводить в дабл(точка же есть! хотя и не значашая).. хотя логичнее в Интеджер.. пришлось добавить доп. проверку
Олеся17 уровень, Санкт-Петербург
3 апреля, 10:11
6 попыток, Карл! С регулярными выражениями не получилось. Сделала в итоге через try-catch. Не знаю на сколько это допустимо в реальной жизни...
Oleg Zaytsev22 уровень
28 марта, 21:34
очень жесткая задача, минут 40 думал как решить, не додумался. риспектос
Armen18 уровень, Москва
27 марта, 07:01
при решении регуляркой не забывайте про отрицательные числа, на это потратил 2 попытки
Pavel16 уровень
18 марта, 22:47
Что я только не пробовал ... с 10 попытки , а оказалось во всех вариантах значение для short у меня было <= 128 вместо <128 . 4 часа ....... if(!s.contains("." ) && d>0 && d<=128){print(Short.parseShort(s));}
Danny F20 уровень, Москва
7 апреля, 14:02
Если клинит на одной задаче больше 20 минут, лучше на нее забить и вернуться через день-два... Постоянно сталкиваюсь с ситуацией, когда не могу решить задачу вечером по часу, а утром на свежую голову решаю с 1-2 попытки
NewBuy19 уровень, Санкт-Петербург
13 марта, 18:26
Ну вашу же мамашу, специально же до решения подумал, а что если в строке есть точка, посмотрел условия, где черным по белому написано: Если содержит точку '.', то вызвать метод print для Double; и не стал проверять на то, может корректно строка быть преобразована в число. В итоге решил из-за этого со второй попытки. Зачем так делать? Напишите уж тогда в условии строчку про корректное преобразование
Natalya Guskova17 уровень, Москва
16 марта, 16:37
Если введенная строка содержит точку(".") и может быть корректно преобразована в число типа Double - должен быть вызван метод print(Double value). Так написано же
NewBuy19 уровень, Санкт-Петербург
17 марта, 06:13
Почему бы не написать это в условии, на требования обычно не обращаю внимание
Natalya Guskova17 уровень, Москва
17 марта, 14:49
это очень плохо, потом все равно придется
NewBuy19 уровень, Санкт-Петербург
17 марта, 15:27
Иногда в требованиях написан явный ответ к задаче, так не интересно ;)
Виталий Злобин17 уровень, Новосибирск
25 февраля, 13:09
Попрактиковал регулярные, задача доставила удовольствие. Советую!
Владимир18 уровень, Москва
23 февраля, 18:43
Потратил целый день на эту задачу, решил использовать регулярные выражения.
Eugene20 уровень
19 февраля, 21:16
Долго ломал голову и решил через создание дополнительных методов isString и isDouble. Программа работала корректно, но валидатор не принял ни один из пунктов, кроме первых двух (почему - непонятно). Подсмотрел в комментариях про ловлю исключения при проверке на точку и всё переделал.