2016. 11. 28. 16:08

자바 영구달력 알고리즘

영구달력은 영구읍~다 그 영구가 나오는 달력이 아니고, 
다른 말로 만년 달력이라고 할 수 있습니다. 우리가 일상적으로 
사용하는 양력달력을 말하는겁니다. 이걸 년도와 월을 입력받아
출력해주는 자바 프로그램을 만들어 봅니다.
먼저 달력 관련 프로그램이므로 자바 유틸에 있는 
Calendar 클래스를 임포트해주고, 이건 생성자
대신에 바로 인스턴스를 선언합니다.
import java.util.Calendar ;
Calendar calendar = Calendar.getInstance() ;
윤년을 구하는 알고리즘은 엮인글 참조하세요.

윤년을 먼저 구하는 이유는 매년 2월의 말일이
28일인지 29일인지를 알고자 함입니다.

그리고, 그 외 매달 말일이 30일인지 31일인지
결정을 해줘야겠죠.

달력에서 한 주일은 7일이므로 이걸 세팅해줍니다.

calendar.set(year, month - 1, 1) ;
int day = calendar.get(Calendar.DAY_OF_WEEK) ;
이제 해당 월의 달력을 출력해주는 부분.
위에서 구해진 그 달의 말일을 활용하여
한 달의 달력을 구성합니다. 아래 date는
초기값을 1로 지정하여 변수 선언합니다.
if (day == 1) {
  for (i = 1 ; i <= checkMonthLast ; i++) {
    if (i == 8 || i == 15 || i == 22 || i == 29 ) {
      System.out.println() ;          
    }    
    System.out.printf("%2d\t", date++) ;
  }
}

나머지 2~7일도 이런 방식으로 해주면 됩니다.

이제 결과를 보겠습니다.

Java로 윤년 알아보는 프로그램