Речь пойдёт о задаче : День недели рождения твоего Проинициализируй переменную 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 Можете мне попробовать по своему донести ? А вдруг ваше обхяснение мне больше зайдет )