Задача 1 - ReverseArray
Задание выполняйте в классе src/main/java/practice/reverseArray/ReverseArray.java
Что нужно сделать
- В классе ReverseArray реализуйте метод reverse(), который должен поменять порядок элементов на обратный и вернуть тот же самый массив.
- Проверьте ваш код с помощью тестов.
Пример
Первоначальный массив: [“a”, “b”, “c”, “d”].
Массив с элементами в обратном порядке: [“d”, “c”, “b”, “a”].
Задача 2 - Hospital
Задание выполняйте в классе src/main/java/practice/hospital/Hospital.java
Что нужно сделать
- Напишите код метода generatePatientsTemperatures(), который должен сгенерировать массив float, содержащий значения температур пациентов от 32 до 40 градусов.
- В методе getReport()вам требуется составить строку с отчётом по значениям температур в массиве с пациентами:
- Соберите в строку список температур пациентов.
- Рассчитайте среднее арифметическое значение температуры.
- Посчитайте количество здоровых пациентов с температурой от 36,2 до 36,9 градусов.
- Проверьте свой код с помощью тестов.
Задача 3 - TwoDimensionalArray
Задание выполняйте в классе src/main/java/practice/twoDimensionalArray/TwoDimensionalArray.java
Цель задания
Закрепить навыки работы с массивами, используя двумерный массив.
Что нужно сделать
В классе TwoDimensionalArray реализуйте метод
public static char[][] getTwoDimensionalArray(int size) {
который должен создать двумерный массив размера size, на диагоналях которого должны быть символы 'X', в остальных ячейках пробел ' '.
Если распечатать массив сформированный методом getTwoDimensionalArray с аргументом 7, то должны получить:
X Х
Х Х
Х Х
Х
Х Х
Х Х
Х Х
Задача 4 - TodoList
Задание выполняйте в проекте src/main/java/practice/TodoList.java
- Разработайте программу — список дел, который управляется командами в консоли. Команды: LIST, ADD, EDIT, DELETE.
- Для работы с данными списка дел в проекте находится класс TodoList, который должен отвечать за хранение и работу со списком дел. Реализуйте все методы и проверьте класс с помощью существующих тестов.
- В классе Main напишите код для реализации взаимодействия с пользователем через ввод команд в консоль.
Принцип работы команд:
- LIST — выводит дела с их порядковыми номерами;
- ADD — добавляет дело в конец списка или дело на определённое место, сдвигая остальные дела вперёд, если указать номер; если указан несуществующий индекс - добавить в конец списка.
- EDIT — заменяет дело с указанным номером; если указан несуществующий индекс - ничего не делать.
- DELETE — удаляет; если указан несуществующий индекс - ничего не делать.
Команды вводятся пользователем в консоль одной строкой.
Примеры работы со списком дел (жирным шрифтом выделен ввод пользователя)
ADD buy milk
Добавлено дело "buy milk"
ADD learn java
Добавлено дело "learn java"
LIST
0 - buy milk
1 - learn java
EDIT 0 make a cup of tea
Дело "buy milk" заменено на "make a cup of tea"
DELETE 1
Дело "learn java" удалено
LIST
0 - make a cup of tea
DELETE 100
Дело с таким номером не существует
Задача 5 - EmailList
Задание выполняйте в классе src/main/java/practice/EmailList.java.
Напишите программу, в которой будет храниться перечень адресов электронной почты. Адреса можно добавлять через консоль командой ADD и печатать весь список командой LIST.
Программа должна проверять корректность вводимых email и печатать сообщение об ошибке при необходимости.
Для работы с данными списка дел в проекте находится класс EmailList, который должен отвечать за хранение и работу с электронными адресами. Реализуйте все методы и проверьте класс с помощью существующих тестов. Вы можете добавлять дополнительные методы в класс.
Принцип работы команд
LIST — выводит список электронных адресов.
ADD — проверяет и, если формат адреса верный, добавляет в множество.
Примеры команд
LIST
ADD hello@skillbox.ru
Команды вводятся одной строкой пользователем в консоль.
Примеры работы со списком электронных адресов (жирным шрифтом выделен ввод пользователя)
ADD mail@mail.ru
ADD hello@skillbox.ru
ADD hello@skillbox
ADD hello@skillbox.ru
LIST
hello@skillbox.ru
mail@mail.ru
Задача 6 - PhoneBook
Задание выполняйте в классе src/main/java/practice/PhoneBook.java.
- Напишите программу, которая будет работать как телефонная книга:
- Если вводим новое имя, программа просит ввести номер телефона и запоминает его.
- Если новый номер телефона — просит ввести имя и также запоминает.
- Если вводим существующее имя или номер телефона, программа выводит телефон(ы) или имя абонента соответственно.
- При вводе команды LIST программа печатает в консоль список всех абонентов в алфавитном порядке с номерами.
- Определяйте имя и телефон с помощью регулярных выражений.
- Подумайте, что выбрать в качестве ключа и значения для Map, и выберите лучший, по вашему мнению, вариант. Опишите, какие минусы и плюсы видите в своём выборе.
- Для работы с данными телефонной книги в проекте находится класс PhoneBook, который должен отвечать за хранение и работу с абонентами. Реализуйте все методы и проверьте класс с помощью существующих тестов. Вы можете добавлять дополнительные методы в класс.
- Команды вводятся пользователем в консоль одной строкой.
Примеры работы с телефонной книгой (жирным шрифтом выделен ввод пользователя)
Введите номер, имя или команду:
Маша
Такого имени в телефонной книге нет.
Введите номер телефона для абонента “Маша”:
79001234567
Контакт сохранен!
Введите номер, имя или команду:
79007654321
Такого номера нет в телефонной книге.
Введите имя абонента для номера “79007654321”:
Маша
Контакт сохранен!
Введите номер, имя или команду:
Nfif@
Неверный формат ввода
Введите номер, имя или команду:
LIST
Маша - 79001234567, 79007654321
Задача 7 - CoolNumbers
Выполните задание в классе src/main/java/practice/CoolNumbers.java.
- Реализуйте метод генерации «красивых» автомобильных номеров generateCoolNumbers() в классе CoolNumbers. Используйте следующие правила генерации номеров:
- XYZ — различный набор из списка разрешенных букв, N — цифры, R — регион (от 01 до 199);
- XNNNYZR — пример: A111BC197, У777HC66.
- В госномерах автомобилей в РФ используются следующие буквы: А, В, Е, К, М, Н, О, Р, С, Т, У, Х.
- В коллекции должно быть не менее 2 млн номеров.
- Реализуйте методы поиска класса CoolNumbers по поиску номеров в каждой коллекции:
- прямым перебором по ArrayList,
- бинарным поиском по сортированному ArrayList,
- поиском в HashSet,
- поиском в TreeSet.
- Измерьте и выведите длительность каждого метода поиска. Формат вывода результатов поиска:
- Поиск перебором: номер найден/не найден, поиск занял 34нс
- Бинарный поиск: номер найден/не найден, поиск занял 34нс
- Поиск в HashSet: номер найден/не найден, поиск занял 34нс
- Поиск в TreeSet: номер найден/не найден, поиск занял 34нс