- Числа, строки и даты
4.1. Объекты и примитивы
4.2. Зачем нужны объекты и примитивы
4.3. Значения по умолчанию
4.4. Boxing и unboxing
4.5. Повторяем изученное
4.6. Домашняя работа 4.1
4.7. Какие бывают числа
4.8. Биты и байт
4.9. Числа int и double
4.10. Точность чисел с плавающей точкой
4.11. Преобразование чисел разных типов
4.12. Преобразование строки в число и обратно
4.13. Домашняя работа 4.2
4.14. Какие бывают операции с числами
4.15. Инкремент и декремент
4.16. Класс Math
4.17. Домашняя работа 4.3
4.18. Символы и кодировки
4.19. Специальные символы
4.20. Методы класса String
4.21. Домашняя работа 4.4
4.22. Конкатенация строк
4.23. Сравнение строк
4.24. Регулярные выражения
4.25. Домашняя работа 4.5
4.26. Календарь и метка времени
4.27. Домашняя работа 4.6
TASK_4_1_1: IntegerExperiments
TASK_4_1_2: IntegerExperiments
TASK_4_2: BoundaryValues
TASK_4_3_1: GeometryCalculator
TASK_4_3_2: Boxes
TASK_4_4_1: StringExperiments
TASK_4_4_2: StringExperiments
TASK_4_4_3: StringExperiments
TASK_4_4_4: StringExperiments
TASK_4_5_1: StringExperiments
TASK_4_5_2: StringExperiments
TASK_4_5_3: StringExperiments
TASK_4_5_4: StringExperiments
TASK_4_5_5: StringExperiments
TASK_4_6: Birthdays
Цель задания
Научиться на практике использовать методы классов Integer и String.
Что нужно сделать
1. Запустите код проекта IntegerExperiments. Найдите ошибку, исправьте её заменой Integer на int.
2. Реализуйте статический метод sumDigits, чтобы он считал сумму цифр в числе и возвращал сумму в результате своей работы. Для реализации метода можете использовать методы:
- класса Integer: toString(), parseInt();
- класса String: charAt(), length(), valueOf().
3. Выведите в консоль суммы цифр чисел: 12345, 10, 5059191.
4. Отправьте в репозиторий Git коммит с выполненным заданием.
Решение
TASK_4_1_1: IntegerExperiments
Критерии оценки
«Зачёт» — в консоль выведены суммы цифр.
«Незачёт» — задание не выполнено.
Дополнительное задание*
Цель задания
Изучить методы класса Character.
Что нужно сделать
- Изучите методы класса Character, найдите метод получения int из char.
- Напишите метод sumDigits() в котором используйте метод класса Character.
- Отправьте в репозиторий Git отдельный коммит с выполненным заданием.
Решение
TASK_4_1_2: IntegerExperiments
Критерии оценки
«Зачёт» — в консоль выведены суммы цифр с использованием класса Character.
«Незачёт» — задание не выполнено.
Дополнительный материал
- Примеры работы методов найдите в репозитории (проект snippets, директория M4_1)
- Ссылки на классы и их методы смотрите в официальной документации к JDK:
Цель задания
Научиться получать граничные значения числовых переменных.
Что нужно сделать
- Создайте новый проект и в методе main() напишите код, который распечатает в консоль минимальные отрицательные и максимальные положительные значения всех типов чисел.
- Отправьте в репозиторий Git коммит с выполненным заданием.
Дополнительный материал
- Объяснение, как устроены числа double и float в любом языке программирования
- Особенности float и double в Java
- Калькулятор для экспериментов с битами
Решение
TASK_4_2: BoundaryValues
Критерии оценки
«Зачёт» — выведены максимальные и минимальные отрицательные числа в консоль.
«Незачёт» — задание не выполнено.
Цель задания
Научиться применять арифметические операции и методы класса java.lang.Math.
Что нужно сделать
Прочитать документацию к классу Math на официальном сайте Oracle и реализовать методы работы с геометрическими фигурами, используя методы класса Math и арифметические операции.
В проекте GeometryCalculator реализуйте в классе GeometryCalculator методы:
— подсчёта площади круга, площади треугольника и объёма сферы;
— проверки возможности построения треугольника по трём длинам сторон.
Рекомендации для реализации формул
- площадь треугольника по трём сторонам:
- Условие возможности построения треугольника: у треугольника сумма любых двух сторон должна быть больше третьей.
Решение
TASK_4_3_1: GeometryCalculator
Критерии оценки
«Зачёт» — методы считают верные значения.
«Незачёт» — задание не выполнено.
Дополнительное задание*
Цель задания
Закрепить пройденные темы: арифметические операции, циклы, условные операторы, константы.
Что нужно сделать
Вы доставляете гуманитарную помощь в ящиках одинакового размера. У вас есть грузовики и контейнеры. В каждый грузовик помещается максимум 12 контейнеров. В каждый контейнер — не более 27 ящиков. Ящики, контейнеры и грузовики пронумерованы.
Напишите программу, которая распределит ящики по контейнерам и грузовикам в зависимости от их количества. Программа должна выводить необходимое для этого число грузовиков и контейнеров.
Принцип работы программы
Указываем число ящиков — получаем результат в виде строк:
Грузовик 1:
Контейнер 1:
Ящик 1
Ящик 2
Ящик 3
...
Контейнер 2
Ящик 28
Ящик 29
...
Необходимо:
грузовиков — 1 шт.
контейнеров — 10 шт.
Рекомендации:
Для добавления отступа в строке вы можете использовать символ табуляции «\t».
Обратите внимание на арифметическую операцию «Остаток от деления»
System.out.println(45 % 10); // вывод будет 5.
Решение
TASK_4_3_2: Boxes
Критерии оценки
«Зачёт» — количество грузовиков и контейнеров верно выводится при любом количестве ящиков.
«Незачёт» — задание не выполнено.
Цель заданий
Освоить основные методы класса String.
Задание №1
Что нужно сделать
Распечатайте коды всех букв английского алфавита и сами буквы.
Решение
TASK_4_4_1: StringExperiments
Критерии оценки
«Зачёт» — напечатаны в консоль все буквы английского алфавита.
«Незачёт» — задание не выполнено.
Задание №2
Что нужно сделать
Напишите код в проекте StringExperiments, который считает сумму заработка всех друзей (Васи, Пети и Маши). Используйте методы indexOf(), lastIndexOf(), substring() и trim().
Решение
TASK_4_4_2: StringExperiments
Критерии оценки
«Зачёт» — выведена в консоль сумма заработков.
«Незачёт» — задание не выполнено.
Задание №3
Что нужно сделать
Напишите программу, которая на входе через консоль принимает фамилию, имя и отчество одной строкой (например, «Иванов Сергей Петрович») и выводит фамилию, имя и отчество отдельно в формате:
Фамилия: Иванов
Имя: Сергей
Отчество: Петрович
Решение
TASK_4_4_3: StringExperiments
Критерии оценки
«Зачёт» — при вводе всех составляющих ФИО, в консоль выводится отдельно с новой строки Фамилия, Имя и Отчество.
«Незачёт» — задание не выполнено.
Информация для выполнения заданий
Примеры работы с методами indexOf(), lastIndexOf(), substring() и trim() вы найдёте в репозитории.
Дополнительное задание*
Цель задания
Закрепить использование методов String совместно с ранее пройденными темами.
Что нужно сделать
Пользователь вводит строку, в некоторой части которой содержится конфиденциальная информация. Ваша задача изменить строку и скрыть информацию в < >.
Напишите метод
String searchAndReplaceDiamonds(String text, String placeholder)
который будет заменять в переданной строке String text всё содержимое скобок <> (англ. diamonds) и сами скобки на переданную строку в String placeholder.
Пример работы
String safe = searchAndReplaceDiamonds(«Номер кредитной карты <4008 1234 5678> 8912», «***»);
В safe должна содержаться строка «Номер кредитной карты *** 8912».
Решение
TASK_4_4_4: StringExperiments
Критерии оценки
«Зачёт» — метод заменяет подстроку в < > на placeholder независимо от расположения < >.
«Незачёт» — задание не выполнено.
Цель заданий
Освоить базовые регулярные выражения и методы работы с ними.
Задание №1
Что нужно сделать
Внесите изменения в проект StringExperiments, чтобы суммы заработка каждого человека извлекались из текста регулярным выражением, а в конце программы рассчитывалась и распечатывалась общая сумма заработка людей.
Решение
TASK_4_5_1: StringExperiments
Критерии оценки
«Зачёт» — сумма рассчитывается независимо от изменения расположения чисел в строке и имён.
«Незачёт» — задание не выполнено.
Задание №2
Что нужно сделать
Возьмите английский текст (не менее 100 слов) и напишите программу, которая будет разбивать его на слова и печатать слова в консоли. Знаки препинания не являются частью слова.
Решение
TASK_4_5_2: StringExperiments
Критерии оценки
«Зачёт» — в консоль выводятся слова, каждое с новой строки.
«Незачёт» — задание не выполнено.
Задание №3
Что нужно сделать
Измените программу, написанную в уроке №4: вводимая строка с фамилией, именем и отчеством должна разбиваться с использованием регулярного выражения.
Решение
TASK_4_5_3: StringExperiments
Критерии оценки
«Зачёт» — в консоль выводятся фамилия, имя, отчество каждое на новой строке.
«Незачёт» — задание не выполнено.
Задание №4
Что нужно сделать
Реализуйте удаление лишних символов при вводе номера телефона в консоли и проверку соответствия номера формату мобильных номеров России. Если введённую строку нельзя привести к формату мобильного номера — выводите сообщение о неверном вводе. Телефон может быть введен не только в формате 79091234567, но и с лишними символами.
Пример ввода номеров и результата вывода программы
Ввод пользователя в консоль | Вывод программы в консоль | Примечание |
---|---|---|
+7 909 123-45-67 | 79091234567 | Символов 11 в номере, код страны 7 — номер верный. |
+7 (909) 1234567 | 79091234567 | Символов 11 в номере, код страны 7 — номер верный. |
8-905-1234567 | 79051234567 | Символов 11 в номере, первый символ 8 (код выхода на мобильный номер) заменяем на код страны 7 — номер верный. |
9-453-1234567 | Неверный формат номера | Символов 11 в номере, первый символ после очистки 9, это не 7 и не 8 — формат номера неверный. |
8-905-123 | Неверный формат номера | Символов 7 в номере — номер неверный. |
905-1234567 | 79051234567 | Количество символов 10 после очистки — значит, приводим к формату номера с 7. |
8-905-12345672342 | Неверный формат номера | Символов в номере больше чем 11 — номер неверный. |
Решение
TASK_4_5_4: StringExperiments
Критерии оценки
«Зачёт» — работа программы соответствует ответам в таблице.
«Незачёт» — задание не выполнено.
Дополнительное задание*
Цель задания
Закрепить навыки работы с регулярными выражениями.
Что нужно сделать
Изменить метод
String searchAndReplaceDiamonds(String text, String placeholder)
который будет заменять в переданной строке String text всё содержимое скобок <> и сами скобки на переданную строку в String placeholder, используя регулярные выражения.
Решение
TASK_4_5_5: StringExperiments
Критерии оценки
«Зачёт» — метод заменяет подстроку в < > на placeholder, независимо от расположения < > и количества < > в строке.
«Незачёт» — задание не выполнено.
Цель заданий
Научиться работать с датой, используя класс Calendar.
Что нужно сделать
Напишите программу, которая покажет прошедшие дни вашего рождения от нуля лет до текущего времени в формате: возраст, дата и день недели.
Дату рождения задавайте используя три переменные:
int day = 31;
int month = 12;
int year = 1990;
Формат требуемого вывода:
0 - 31.12.1990 - Mon
1 - 31.12.1991 - Tue
…
Решение
TASK_4_6: Birthdays
Критерии оценки
«Зачёт» — работа программы соответствует ответам в таблице.
«Незачёт» — задание не выполнено.