Речь пойдёт о задаче :
День недели рождения твоего
Проинициализируй переменную birthDate объектом GregorianCalendar с датой своего рождения. Реализуй метод getDayOfWeek(Calendar calendar), чтобы он возвращал русское название дня недели аргумента calendar.
Помни, что в григорианском календаре неделя начинается с воскресенья.
Requirements:
1. Переменная birthDate должна быть проинициализирована при объявлении.
2. Метод getDayOfWeek(Calendar calendar) должен возвращать день недели аргумента calendar.
Сначала я написал так:
package com.javarush.task.pro.task16.task1604;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
/*
День недели рождения твоего
*/
public class Solution {
static Calendar birthDate = new GregorianCalendar(1920, 12, 28);
public static void main(String[] args) {
System.out.println(getDayOfWeek(birthDate));
}
static String getDayOfWeek(Calendar calendar) {
String rusDay = "";
Date date = calendar.getTime();
switch (date.getDay()){
case 1:
rusDay = "Воскресенье";
break;
case 2:
rusDay = "Понедельник";
break;
case 3:
rusDay = "Вторник";
break;
case 4:
rusDay = "Среда";
break;
case 5:
rusDay = "Четверг";
break;
case 6:
rusDay = "Пятница";
break;
case 7:
rusDay = "Суббота";
break;
}
return rusDay;
}
}
На выходе у меня выходит Четверг
Ранее в статье объяснялось что так как это Григорианский Календарь то следует учитывать что там день неджели начинается с воскресенья поэтому я создал кейс где при отлавливании числа 1 будет уже не понедельник а воскресенье.
Программа не прошла валидацию потому что я использовал не то что требовалось в условии.
Я тут рулил с помощью
Date date = calendar.getTime();
вобщем с хитрожопил и сам себе грабли поставил даже при том что результат есть.
Решив посмотреть ответ я я вижу правильное решение такое:
package com.javarush.task.pro.task16.task1604;
import java.util.Calendar;
import java.util.GregorianCalendar;
/*
День недели рождения твоего
*/
public class Solution {
static Calendar birthDate = new GregorianCalendar(1920, 12, 28);
public static void main(String[] args) {
System.out.println(getDayOfWeek(birthDate));
}
static String getDayOfWeek(Calendar calendar) {
String result = "";
int day = calendar.get(Calendar.DAY_OF_WEEK);
switch (day) {
case 1:
return "воскресенье";
case 2:
return "понедельник";
case 3:
return "вторник";
case 4:
return "среда";
case 5:
return "четверг";
case 6:
return "пятница";
case 7:
return "суббота";
}
return result;
}
}
>
ВНИМАНИЕ: тут на выходе идёт "Пятница" Почему?
Почему почему почему?
Ведь день недели идёт с воскресенья.
У меня четверг у них пятница как так.
А ещё я не особо хорошо понял как работает:
int day = calendar.get(Calendar.DAY_OF_WEEK);
именно calendar.get
Можете мне попробовать по своему донести ? А вдруг ваше обхяснение мне больше зайдет )