어떤 옷가게에서 할인 행사를 짝수번째 목요일마다 진행한다고 한다
년도를 입력하면 해당 연도의 모든 할인 날짜를 출력해주는 프로그램을 만들어보세요
콘솔에 출력한 화면
getFirstEventDay 라는 함수를 만들고 매개변수로 사용자가 입력한 year를 받는다는 계획을 세우고 시작하였다
Calender 함수를 이용해서 event라는 변수를 만들고
set함수를 사용하여 event를 사용자가 입력한 년도의 1월 1일로 지정하였다
그리고 다시 한번 set 함수를 사용하여 그 주의 목요일로 event를 설정하였고
하지만, 년도가 작년도로 넘어가는 경우가 생기기 때문에
(2018년 1월 1일이라 가정하였을때, 1월 1일이 금요일이라면 2017년 12월 31일이 목요일이 될 수 있는 경우들이 있다 )
가정문을 사용하여 event의 년도가 사용자가 입력한 year과 다르다면
날짜를 7을 더해주는 코드를 짰다.
위의 예시대로 2017년 12월31일이 목요일이라면 7을 더해 2018년 1월 6일이 목요일이 되기 때문에.
그리고 event를 리턴해준다. 이 때 event는 해당 연도의 처음 시작한 이벤트 날짜이다.
printEventOfYear 함수는 똑같이 매개변수로 사용자가 입력한 year를 가져온다
콘솔창에 이쁘게 띄우기 위해서, SimpleDateFormat을 이용해서 위 사진과 같이 작성하였다.
event는 getFirstEventDay 함수에서 가져온 첫 번째 이벤트 하는 날짜를 뜻한다
count는 이벤트 횟수를 체크하기 위해 설정하였고
while문을 사용하여 event의 년도와 year가 같을 때만
7일씩 계속 더해주고
짝수번째 목요일에만 이벤트를 진행하기 때문에,
가정문을 사용하여 DAY_OF_WEEK_IN_MONTH 함수 (그 달의 몇 번째 주인지 int형으로 반환시켜줌)가 2로 나뉘어 떨어질 때,
즉 짝수번째 주 일 때
프린트 해주고, count를 1씩 증가시킨다.
그리고 마지막으로 count를 출력해준다.
메인에서는 year를 입력받고
printEventOfYear에 인자 값에 입력받은 year를 입력해주면 프로그램 완성!
'TIL > Java' 카테고리의 다른 글
Java Calendar 만들기 (0) | 2021.08.04 |
---|---|
Java gui button puzzle (0) | 2021.08.04 |
Java 차량5부제 코드 만들기 (0) | 2021.08.04 |
Java 주민등록번호 유효성 체크 (0) | 2021.08.04 |
Java 핸드폰번호 유효성 체크 (0) | 2021.08.03 |