не пойму в чём прикол, вроде всё правильно работает, но валидацию не проходит по двум пунктам
package com.javarush.task.pro.task14.task1417;
/*
Валидатор даты
*/
import java.time.LocalDate;
import java.util.Date;
import java.util.HashMap;
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Введи дату в формате dd.mm.yyyy : ");
String date = scanner.nextLine();
validateDate(date);
System.out.println("\nДата корректна.");
}
public static void validateDate(String date) {
checkDateFormat(date);
checkYearValue(date);
checkMonthValue(date);
checkDayValue(date);
}
public static void checkDateFormat(String date) {
//напишите тут ваш код
if (!date.matches("\\d{2}.\\d{2}.\\d{4}")){
throw new InvalidDateFormatException();
}
}
public static void checkYearValue(String date) {
//напишите тут ваш код
int yyyy = Integer.parseInt(date.substring(6, 10));
if (!(yyyy >= 1900 && yyyy <= 2100)){
throw new InvalidYearValueException();
}
}
public static void checkMonthValue(String date) {
//напишите тут ваш код
int mm = Integer.parseInt(date.substring(3, 5));
if (!(mm >= 1 && mm <= 12)){
throw new InvalidMonthValueException();
}
}
public static void checkDayValue(String date) {
HashMap<Integer, Integer> months = new HashMap<>(){{
put(1, 31);
put(2, 29);
put(3, 31);
put(4, 30);
put(5, 31);
put(6, 30);
put(7, 31);
put(8, 31);
put(9, 30);
put(10, 31);
put(11, 30);
put(12, 31);
}};
//напишите тут ваш код
int dd = Integer.parseInt(date.substring(0, 2));
int mm = Integer.parseInt(date.substring(3, 5));
int day = months.get(mm);
if (((dd > day) || dd <= 0)){
throw new InvalidDayValueException();
}
}
}