mport java.text.ParseException;
import java.text.SimpleDateFormat;
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) throws ParseException {
SimpleDateFormat format = new SimpleDateFormat("MMM d yyyy");
Date date1 = format.parse(date);
SimpleDateFormat format1 = new SimpleDateFormat("D");
String date2 = format1.format(date1);
int a = Integer.parseInt(date2);
if (a % 2 == 0) return true;
else return false;
}
}
Иван Зубов
31 уровень
Объясните плиз что в моей логике не правильно?
Решен
Комментарии (8)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Илья ГековMaster
31 июля 2018, 20:08
Тут надо определить, является ли количество дней с начала года четным числом (а не число месяца). Соответственно, надо посчитать какой это день по счету в году и проверить его на четность.
0
Иван Зубов
31 июля 2018, 20:32
Это и так понятно, вопрос, как это сделать и в чем ошибка в данной программе?
0
Илья ГековMaster
31 июля 2018, 20:49
Невнимательно ваш код по началу глянул, думал вы день месяца пытаетесь проверить.
Исправьте на SimpleDateFormat("MMM d yyyy", Locale.ENGLISH) и все заработает.
"The Java Virtual Machine sets the default locale during startup based on the host environment" - без явного указания Locale, JVM сама ставит Locale по умолчанию. К примеру, у меня если в Вашем коде заменить в примере MAY на МАЙ, все заработает и без явного указания Locale.
0
Иван Зубов
31 июля 2018, 21:04
еще пришлось дописать вот это, прога сама подставила только не могу понять почему.
0
Илья ГековMaster
31 июля 2018, 21:14
Потому что метод parse() может выкинуть checked исключение ParseException, соответственно мы обязаны его обработать, либо пробросить вверх по стеку.
0
Иван Зубов
31 июля 2018, 21:36
до такого я еще не дорос.
0
Taras Kutselya
31 августа 2018, 01:23
Иван, уже доросли? :)
0
Иван Зубов
31 августа 2018, 22:02
да, потихоньку схватываю.
0