Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company.tasks;
- import java.time.LocalDate;
- import java.time.format.DateTimeFormatter;
- import java.util.Scanner;
- public class CherryBlossom {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- //your code here
- String blossomDateInput = scanner.nextLine();
- LocalDate blossomDate = parseDate(blossomDateInput);
- int averageTemperature = Integer.parseInt(scanner.nextLine());
- int rain = Integer.parseInt(scanner.nextLine());
- int winterLength = Integer.parseInt(scanner.nextLine());
- LocalDate exactBlossomDate = calculateBlossomDate(blossomDate, averageTemperature, rain, winterLength);
- String formattedDate = formatDate(exactBlossomDate);
- System.out.println(formattedDate);
- }
- private static LocalDate parseDate(String dateInput) {
- DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d MMMM yyyy");
- return LocalDate.parse(dateInput, formatter);
- }
- private static String formatDate(LocalDate date) {
- DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d MMMM yyyy");
- return date.format(formatter);
- }
- private static LocalDate calculateBlossomDate(LocalDate expectedBlossomDate, int averageTemperature, int rain, int winterLength) {
- int temperatureDifference = averageTemperature - 20;
- int rainDifference = Math.abs(rain - 30) / 3;
- int leapYearTemperatureOffset = isLeapYear(expectedBlossomDate.getYear()) ? 5 : 0;
- int daysToAdd = winterLength + temperatureDifference + rainDifference + leapYearTemperatureOffset;
- return expectedBlossomDate.plusDays(daysToAdd);
- }
- private static boolean isLeapYear(int year) {
- return year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment