Бонусное задание | 12 лекция | 5 уровень

5 уровень, 12 лекция
Открыта

— Здорово, боец!

— Здравия желаю, товарищ капитан!

— У меня для тебя шикарная новость. Вот тебе задания для закрепления полученных навыков. Выполняй их каждый день, и твои навыки будут расти с неимоверной скоростью. Они специально разработаны для выполнения их в Intellij IDEA.

8
Задача
Java Core,  5 уровень,  12 лекция
Недоступна
Осваивание статического блока
Cоздадим классы Plane и Helicopter, реализующие интерфейс CanFly, после чего в статическом методе reset класса Solution нужно считать с консоли параметр типа String и если он равен helicopter (plane), то статическому объекту CanFly result присвоить объект класса Helicopter (Plane). В статическом блоке инициализировать CanFly result вызвав метод reset.
8
Задача
Java Core,  5 уровень,  12 лекция
Недоступна
Template pattern
Создадим алгоритм работы баристы в классе DrinkMaker. Он будет выбирать подходящую чашку, класть ингредиенты и заливать жидкостью. Также создадим узкоспециализированные алгоритмы для чая и латте, унаследовав их от DrinkMaker.
8
Задача
Java Core,  5 уровень,  12 лекция
Недоступна
Факториал
На планете Линейный Хаос поиском факториала двузначных чисел на их планете принято занимать младенцев. Ну а мы подойдём по-взрослому, по-программистски, и напишем метод, вычисляющий факториал вплоть до введённого числа.
16
Задача
Java Core,  5 уровень,  12 лекция
Недоступна
Разные методы для разных типов
Итак, полиморфизм. Вы о нём ещё не забыли? Тогда решаем следующую задачку: считываем с консоли данные, пока не будет введено слово "exit". Для каждого значения, кроме "exit", вызываем метод print, какой именно принт — зависит от значения. Например, если значение содержит точку, то вызываем print для Double, а если это число от 0 до 128 — то для short.
4
Задача
Java Core,  5 уровень,  12 лекция
Недоступна
Тренировка мозга
Найдите логическую ошибку: утка (Duck) должна корректно реализовывать интерфейс CanMove. Исправьте ошибку так, чтобы получить правильный результат.
8
Задача
Java Core,  5 уровень,  12 лекция
Недоступна
ООП. Перегрузка
Перегрузите метод info(Object s) в классе Tree дважды, чтобы получилось 3 метода info(Object s), info(Number s), info(String s). После этого разберитесь с методом info(Object s) и создайте функциональность новых методов по аналогии. Например, для метода info(Number s) результат может быть таким: «Дерево № 123 , метод Number, параметр Short.
16
Задача
Java Core,  5 уровень,  12 лекция
Недоступна
Закрепляем паттерн Singleton
Разберёмся с паттерном Singleton на примере светила и планет солнечной системы. Для начала займитесь поиском и найдите где-нибудь в интернете пример "ленивой" реализации Singleton и создайте по образу и подобию три Singleton-класса: Sun, Moon и Earth. Затем реализуйите в них интерфейс Planet. И проделайте ещё парочку операций.
8
Задача
Java Core,  5 уровень,  12 лекция
Недоступна
Перегрузка конструкторов
В этой задаче нам предстоит создать класс Solution и его потомка SubSolution, а для этого потомка — создать конструкторы и исправить их модификаторы доступа так, чтобы получить три конструктора с разными модификаторами (кроме private).
8
Задача
Java Core,  5 уровень,  12 лекция
Недоступна
Порядок загрузки переменных
Итак, полезная задачка на отладку. У вас есть код, в котором нужно разобраться: узнайте, что и в какой последовательности инициализируется. Для этого можно использовать отладчик в IntelliJ IDEA и его брейкпоинты. Затем исправьте порядок инициализации так, чтобы получить определённый результат.
8
Задача
Java Core,  5 уровень,  12 лекция
Недоступна
Файл в статическом блоке
Инициализируйте переменную Statics.FILE_NAME полным путем к файлу с данными, который содержит несколько строк. После этого в статическом блоке считайте из файла с именем Statics.FILE_NAME все строки, и добавьте их по отдельности в List lines.

— Те задания были для духов. Для дедушек я добавил бонусные задания повышенной сложности. Только для старослужащих.

8
Задача
Java Core,  5 уровень,  12 лекция
Недоступна
Дебаг, дебаг, и еще раз дебаг
Снова и снова мы ищем чужие ошибки и исправляем их... Такова наша программистская доля. Наша программа снова выводит что-то не то: закралась ошибка (всего одна!). Найти и обезвредить! Для этого воспользуйтесь дебаггером IntelliJ IDEA.
16
Задача
Java Core,  5 уровень,  12 лекция
Недоступна
Парсер реквестов
Считайте с консоли URL-ссылку. Затем выведите на экран через пробел список всех параметров (Параметры идут после ? и разделяются &, например, lvl=15). URL содержит минимум 1 параметр. Если присутствует параметр obj, то передайте его значение в нужный метод alert.
8
Задача
Java Core,  5 уровень,  12 лекция
Недоступна
ООП. Hryvnia — тоже деньги
Исправьте класс Hryvnia так, чтоб избежать возникновения ошибки StackOverflowError. При этом, как ни парадоксально, Hryvnia должна быть наследницей класса Money и в этом классе должен быть реализован метод getAmount.
Комментарии (299)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
sergey-sy 15 уровень, Москва
среда, 22:51
Задача - Разные методы для разных типов. В цикле читаем строку. Если строка равна "exit" - то выходим из цикла. Если строка содержит только цифры в начале и конце и только одну точку между ними line.matches("\\d+\\.\\d+") - то пытаемся преобразовать в Double, напечатать и переходим на следующий цикл. Пытаемся преобразовать строку в Integer. Если Integer в диапазоне 0 < x < 128 - то преобразуем в short и печатаем, если нет - то печатаем без преобразования. Переходим на следующий цикл. Печатаем строку. (если удалось сюда добраться)
Акижан Кручу хвосты
среда, 19:41
Найс, должен был с первого раза сделать задачу "Закрепляем паттерн Singleton". Вместо этого вылезла ошибка импорта - "import com.javarush.task.task15.task1529.Plane;". ???????????????? ОТКУДА это в моём коде, че за самолёт вообще. У меня у одного такая фигня?
Павел 26 уровень, Новосибирск
8 часов назад
Похоже ты набирал в ИДЕА Planeta, но когда набрал только Plane... и уже нажал ввод у тебя сработал автоимпорт из этой задачи.
Dara Software Developer
воскресенье, 16:52
Реализация паттерна Singleton (Lazy Initialization) подробно описана здесь от Javarush: https://javarush.ru/groups/posts/589-patternih-i-singleton--dlja-vsekh-kto-vpervihe-s-nimi-stolknuls...
Dara Software Developer
воскресенье, 14:15
Для задачи с полиморфизмом и с парсером может быть удобным регулярное выражение для проверки содержится ли число в данной строке:
myString.matches(".*\\d.*")
Проверить, что это число типа double (присутствует собственно сама точка. любое количество цифр до точки и после):
myString.matches("([0-9]*)\\.([0-9]*)")
alex_us 18 уровень, Симферополь
21 октября, 12:26
не очень понимаю с чего начинать парсер реквестов. Разобрался с регулярными выражениями но как то туплю на старте. и чтото туплю в задаче "разные методы для разных типов " как определить корректно ли преобразуется часть строки в дабл или шорт. натолкните на мысль пожалуйста))
Pavel 16 уровень
23 октября, 03:25
по поводу разные методы для разных типов, делаешь проверку типа, если строка содержит "." то это double. А наприер если Integer.parseInt(строка) > 0 и меньше 128 то short.
alex_us 18 уровень, Симферополь
23 октября, 08:29
а если например будет ввод такого типа: "фыв.фыв " то тоже как дабл воспримет из-за точки?
Pavel 16 уровень
24 октября, 03:23
все if находятся в болке try, и получается что "фыв.фыв" подходит под условие string.contains("."), далее идет попытка перевести эту строку в дабл, но тут у нас ошибка NumberFormatException, так как мы парсим буквы вместо цифр, а в блоке catch вызываем метод для строки. Вот как то так, надеюсь что то прояснил)
Dara Software Developer
воскресенье, 16:49
Если строка содержит точку - это еще не значит, что это double. Ведь строка может быть, например, "text.text" - если попробовать ее сконвертировать в double - всплывет исключение и программа сработает не корректно. Нужно еще проверять, что кроме точки строка состоит из цифр.
sergey-sy 15 уровень, Москва
среда, 22:55
не обязательно проверять, что строка состоит из цифр. Просто если точка есть - то пытаемся преобразовать в Double. Если словим исключение во время преобразования, значит двигаемся дальше и печатаем как строку
if (line.contains(".")) {
    try {
        print(Double.parseDouble(line));
        continue;
    } catch (NumberFormatException ignored) {

    }
}
sergey-sy 15 уровень, Москва
среда, 22:57
Но я канеш через регулярку сделал. Так просто очевиднее для остальных, что ты хотел в этом месте сделать.
if (line.matches("\\d+\\.\\d+"))
alex_us 18 уровень, Симферополь
19 октября, 19:02
https://javarush.ru/groups/posts/589-patternih-i-singleton--dlja-vsekh-kto-vpervihe-s-nimi-stolknulsja про паттерны и синглтон. Молюсь на автора
Станислав 18 уровень, Москва
20 октября, 19:26
Что такое паттерн должен понять любой инженер. Всегда проще воспользоваться стандартным методом много раз протестированным чем изобретать что-то свое.
11 октября, 18:01
По сравнению с некоторыми мидл-задачами хард-задача про синглтон кажется сладкой ватой.
Maksim Novikov Software Developer в EMBL
10 октября, 16:28
В парсере реквестов для извлечения строки параметров можно воспользоваться классом URL.
URL url = new URL(urlStr);
String query = url.getQuery();
Но строку параметров всё равно придётся парсить с помощью split & indexOf.
Сергей 17 уровень, Воронеж
9 октября, 20:51
От задачи "Разные методы для разных типов" мозг чесаться начал