원하는 년도와 월을 입력받으면 그 달의 달력과 공휴일을 출력하여주는 프로그램입니다.
[last_day_num] 메서드는 년도와 월의 값을 입력받아
해당하는 달이 총 몇일까지 있는지 값을 리턴해주는 메서드이다.
(예) 2020 1월이 31일까지 있다면 31이라는 int값을 반환해준다)
1. year(연도)와 week(해당 월)의 값을 입력받아온다
일수의 값에 1을 고정해둔 이유는 year,week의 값만 받으면 되기때문이다
2. now.lengthOfMonth()는 해당 월의 길이를 반환 1월이 31일까지 있다면 31이라는 숫자를 반환해준다.
[start_day] 메서드는 년도와 월의 값을 입력받아
해당하는 요일의 값을 리턴해주는 메서드이다
월요일을 기준으로 1 ~ 7 까지의 값을 리턴하여 줍니다
1. year(연도)와 week(해당 월)의 값을 입력받아온다
일수의 값에 1을 고정해둔 이유는 year,week의 값만 받으면 되기때문이다
2. now.getDayOfWeek().getValue()는 해당하는 요일의 값을 리턴하여준다 월요일 1, 화요일 2 ....일요일 7
[calendar_create()]
캘린더를 생성하여 출력해주는 기능을 한다.
1. start_day_num으로 받은 값이 7일때에 0으로 초기화 하는 이유는
예시를 들자면 수요일이 해당 월의 시작일이고 수요일의 값이 3이라면 3의 값만큼 공백을 넣어줘
일[공백] 월[공백] 화[공백] 을 넣어줘 수요일부터
1일이 들어갈수 있게 만들어 줄것인데 해당 월의 시작일이 일요일이라면 7의 값을 받기때문에 공백 7개가 들어가
달력의 첫주가 전부 공백이 되고 다음줄부터 나오는것처럼 보인다 그렇기에
7이나온다면 0으로 바꿔줘서 일요일이 시작일이라면 일요일부터 출력되게 해준다.
2. 배열의 공간은 시작요일의 값과 월의 길이값을 합해준다 start_day_num만큼의 길이에는 /t가 들어갈것이고
last_day_num만큼의 길이는 1 ~ 마지막 일 까지의 값이 들어갈 것이다
예) 총 일수가 31일이고 수요일이 시작일때에 [/t] [/t] [/t] [1] [2] [3] [4] [5] ..... [31] 이렇게 넣어줄 것이다.
3. 공백의 값을 넣어주는 for문이다 0부터 start_day_num 값 미만까지 넣어준다.
4. 일 의 값을 넣어주는 for문이다 start_day_num의 값부터 last_day_num값 까지 넣어준다
배열 안의 값은 for문 안에 leng이라는 int변수를 선언해 1부터 들어가게 해주었다.
5. 달력은 일~토 까지 총 7일이므로 i가 7이 될때마다 한줄씩 띄워줬다.
[print_horyday()]
연도와 달의 값을 매개변수로 받아
해당 월의 공휴일을 출력하여주는 기능이다
1. now에 연도와 월을 받아 LocalDate를 원하는 연도와 월을 만들어준다
2. DateTimeFormatter.ofPattern는 요일을 미리설정해둔 문자열로 리턴하여준다
3. MM월 이라는 문자열을 넣어뒀기에 출력될때에 01월 02월...12월 이런식으로 출력이 된다.
4. 이곳에서 contains라는 기능을 이용하여 체크하는데 만약 2월 이라는 문자열이
내가 검사하고 싶은 문자열에있다면 true가 반환되는 기능이다
이걸 이용하여 holiday를 반복문을 돌려 내가 입력한 ??월과 같은 단어가 있으면 그 월수를 출력하여주는 기능이다.
메인에서는 출력하고 싶은 달력의 년도와 월을 입력해주면 이쁘게 출력해준다!
'공부 > Java 복습' 카테고리의 다른 글
Java 차량 5부제 (0) | 2021.08.16 |
---|---|
Java 소수 구하기 (0) | 2021.08.14 |
Java 핸드폰 번호 검사 (0) | 2021.08.12 |
Java 사용 가능 주민등록 체크 (0) | 2021.08.11 |
Java 행 맨 게임 콘솔 출력 버전 (0) | 2021.07.31 |