Задача:
Напишите программу, которая запрашивает у пользователя дату и определяет, является ли она выходным днем. Java.
План:
- Алгоритм решения
- Код программы
- Примеры входных данных и ожидаемых результатов
- Объяснение кода программы
- Блок-схема
Алгоритм решения:
-
Импорт необходимых классов для работы с датами и вводом пользователя.
-
Создание объекта Scanner для чтения пользовательского ввода.
-
Определение формата даты с помощью DateTimeFormatter.
-
Запрос у пользователя ввода даты в формате "dd.MM.yyyy".
-
Обработка введенной даты в блоке try-catch:
- Парсинг введенной строки в объект LocalDate.
- Получение дня недели для введенной даты.
-
Проверка, является ли день недели субботой или воскресеньем:
- Если да, вывод сообщения о том, что дата является выходным днем.
- Если нет, вывод сообщения о том, что дата является рабочим днем.
-
В случае ошибки парсинга даты (неверный формат):
- Вывод сообщения об ошибке и указание правильного формата.
-
Закрытие объекта Scanner.
Код программы на языке Java:
Код Java
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Scanner;
public class WeekendChecker {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy");
System.out.print("Enter a date (dd.MM.yyyy): ");
String input = scanner.nextLine();
try {
LocalDate date = LocalDate.parse(input, formatter);
DayOfWeek dayOfWeek = date.getDayOfWeek();
if (dayOfWeek == DayOfWeek.SATURDAY || dayOfWeek == DayOfWeek.SUNDAY) {
System.out.println("The entered date is a weekend.");
} else {
System.out.println("The entered date is a weekday.");
}
} catch (Exception e) {
System.out.println("Invalid date format. Please use dd.MM.yyyy.");
}
scanner.close();
}
}
Примеры входных данных и ожидаемых результатов:
Input: 15.05.2023
Output: The entered date is a weekday.
Input: 20.05.2023
Output: The entered date is a weekend.
Input: 21.05.2023
Output: The entered date is a weekend.
Input: 22.05.2023
Output: The entered date is a weekday.
Input: 01.01.2024
Output: The entered date is a weekday.
Input: 31.12.2023
Output: The entered date is a weekend.
Input: 29.02.2024
Output: The entered date is a weekday.
Input: 29.02.2023
Output: Invalid date format. Please use dd.MM.yyyy.
Input: 32.05.2023
Output: Invalid date format. Please use dd.MM.yyyy.
Input: 15-05-2023
Output: Invalid date format. Please use dd.MM.yyyy.
Объяснение кода программы:
-
Импорт необходимых классов:
Импортируются классы для работы с датами, форматирования дат и ввода пользовательских данных.import java.time.DayOfWeek; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.Scanner;
-
Объявление класса и метода main:
Создается класс WeekendChecker с методом main, который является точкой входа в программу.public class WeekendChecker { public static void main(String[] args) {
-
Инициализация Scanner и DateTimeFormatter:
Создается объект Scanner для чтения пользовательского ввода и форматтер для парсинга даты в формате "dd.MM.yyyy".Scanner scanner = new Scanner(System.in); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy");
-
Запрос даты у пользователя:
Выводится приглашение ввести дату, и считывается введенная строка.System.out.print("Enter a date (dd.MM.yyyy): "); String input = scanner.nextLine();
-
Обработка введенной даты:
Происходит попытка парсинга введенной строки в объект LocalDate и получение дня недели.try { LocalDate date = LocalDate.parse(input, formatter); DayOfWeek dayOfWeek = date.getDayOfWeek();
-
Проверка на выходной день:
Проверяется, является ли день недели субботой или воскресеньем, и выводится соответствующее сообщение.if (dayOfWeek == DayOfWeek.SATURDAY || dayOfWeek == DayOfWeek.SUNDAY) { System.out.println("The entered date is a weekend."); } else { System.out.println("The entered date is a weekday."); }
-
Обработка исключений:
Если при парсинге даты возникает исключение, выводится сообщение об ошибке.} catch (Exception e) { System.out.println("Invalid date format. Please use dd.MM.yyyy."); }
-
Закрытие Scanner:
Закрывается объект Scanner для освобождения ресурсов.scanner.close();