Skip to content

Latest commit

 

History

History

m04-numbers-strings-and-dates

Программа модуля

  1. Числа, строки и даты 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


4.6. Домашняя работа 4.1

Цель задания

Научиться на практике использовать методы классов 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.

Что нужно сделать

  1. Изучите методы класса Character, найдите метод получения int из char.
  2. Напишите метод sumDigits() в котором используйте метод класса Character.
  3. Отправьте в репозиторий Git отдельный коммит с выполненным заданием.

Решение

TASK_4_1_2: IntegerExperiments

Критерии оценки

«Зачёт» — в консоль выведены суммы цифр с использованием класса Character.
«Незачёт» — задание не выполнено.

Дополнительный материал

  • Примеры работы методов найдите в репозитории (проект snippets, директория M4_1)
  • Ссылки на классы и их методы смотрите в официальной документации к JDK:

String
Integer
Character


4.13. Домашняя работа 4.2

Цель задания

Научиться получать граничные значения числовых переменных.

Что нужно сделать

  1. Создайте новый проект и в методе main() напишите код, который распечатает в консоль минимальные отрицательные и максимальные положительные значения всех типов чисел.
  2. Отправьте в репозиторий Git коммит с выполненным заданием.

Дополнительный материал

Решение

TASK_4_2: BoundaryValues

Критерии оценки

«Зачёт» — выведены максимальные и минимальные отрицательные числа в консоль.
«Незачёт» — задание не выполнено.


4.17. Домашняя работа 4.3

Цель задания

Научиться применять арифметические операции и методы класса 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

Критерии оценки

«Зачёт» — количество грузовиков и контейнеров верно выводится при любом количестве ящиков.
«Незачёт» — задание не выполнено.


4.21. Домашняя работа 4.4

Цель заданий

Освоить основные методы класса 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 независимо от расположения < >.
«Незачёт» — задание не выполнено.


4.25. Домашняя работа 4.5

Цель заданий

Освоить базовые регулярные выражения и методы работы с ними.

Задание №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, независимо от расположения < > и количества < > в строке.
«Незачёт» — задание не выполнено.


4.27. Домашняя работа 4.6

Цель заданий

Научиться работать с датой, используя класс Calendar.

Что нужно сделать

Напишите программу, которая покажет прошедшие дни вашего рождения от нуля лет до текущего времени в формате: возраст, дата и день недели.

Дату рождения задавайте используя три переменные:

int day = 31;  
int month = 12;  
int year = 1990;  

Формат требуемого вывода:

0 - 31.12.1990 - Mon  
1 - 31.12.1991 - Tue  
…

Решение

TASK_4_6: Birthdays

Критерии оценки

«Зачёт» — работа программы соответствует ответам в таблице.
«Незачёт» — задание не выполнено.