логика верная ,но где то косяк, тестил все возможные места,все равботает
были тесты на january 1 2000
january 2 2020
march 1 1600
march 1 1601
march 1 1700
march 1 1704
november 1 1600
november 2 1604
package com.javarush.task.task08.task0827;
import java.util.Date;
/*
Работа с датой
*/
public class Solution {
public static void main(String[] args) {
System.out.println(isDateOdd("MAY 1 2013"));
}
public static boolean isDateOdd(String date) {
String[] store = date.split(" ");
int year = Integer.parseInt(store[2]);
int day = Integer.parseInt(store[1]);
int result = 0;
int flag = 0;
if(year % 400 == 0) flag = 1;
if(year % 100 != 0 && year % 4 == 0) flag = 1;
while (true) {
if (!store[0].toLowerCase().equals("january")) result += 31;
else break;
if (!store[0].toLowerCase().equals("february")) result += 28;
else{
if (flag != 0) result += 1;
break;
}
if (!store[0].toLowerCase().equals("march")) result += 31;
else break;
if (!store[0].toLowerCase().equals("april")) result += 30;
else break;
if (!store[0].toLowerCase().equals("may")) result += 31;
else break;
if (!store[0].toLowerCase().equals("june")) result += 30;
else break;
if (!store[0].toLowerCase().equals("july")) result += 31;
else break;
if (!store[0].toLowerCase().equals("august")) result += 31;
else break;
if (!store[0].toLowerCase().equals("september")) result += 30;
else break;
if (!store[0].toLowerCase().equals("october")) result += 31;
else break;
if (!store[0].toLowerCase().equals("november")) result += 30;
else break;
if (!store[0].toLowerCase().equals("december")) result += 31;
else break;
}
if (flag != 0 && !store[0].toLowerCase().equals("january") && !store[0].toLowerCase().equals("february")) result += 1;
if ((result + day )% 2 == 0) return false;
else return true;
}
}