import java.util.Scanner;
public class Calendar {
public static void main(String args[]) {
int year;
int month;
int totalDays = 0;
int totalYearDays = 0;
Scanner sc = new Scanner(System.in);
System.out.println("연도 입력 : ");
year = sc.nextInt();
System.out.println("월 입력 : ");
month = sc.nextInt();
// 해당 년 월의 총 일수 구하기
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
totalDays = 31;
break;
case 4:
case 6:
case 9:
case 11:
totalDays = 30;
break;
case 2:
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
totalDays = 29; // 윤년
} else {
totalDays = 28; // 평년
}
// year 가 4의 배수이면 윤년
// 그런데, year가 100의 배수이면 평년
// 그런데, year가 400의 배수이면 윤년
// 2003 : 평년
// 2004 : 윤년
// 2100 : 평년
// 2400 : 윤년
}
// 2000 1월 1일 토요일
// 1900 : 365
// 1901 : 365
// 1902 : 365
// 1903 : 365
// 1904 : 366
//
// 2012 1월 1일 ?
// 0년 1월 1일
int wcount = 0;
wcount = (365 * year + year / 4 - year / 100 + year / 400) % 7;
System.out.printf("%4s%4s%4s%4s%4s%4s%4s\n", "일", "월", "화", "수", "목",
"금", "토");
// 3월
// wcount + 1 + 2
for (int i = 1; i < month; i++) {
switch (i) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
wcount += 31;
break;
case 4:
case 6:
case 9:
case 11:
wcount += 30;
break;
case 2:
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
wcount += 29; // 윤년
} else {
wcount += 28; // 평년
}
// year 가 4의 배수이면 윤년
// 그런데, year가 100의 배수이면 평년
// 그런데, year가 400의 배수이면 윤년
// 2003 : 평년
// 2004 : 윤년
// 2100 : 평년
// 2400 : 윤년
}
}
wcount = wcount % 7;
for (int i = 0; i < wcount; i++) {
System.out.printf("%5s", "");
}
for (int i = 1; i <= totalDays; i++) {
System.out.printf("%5d", i);
if (wcount % 7 == 6)
{
System.out.println("");
}
wcount++;
}
}
}
'Programming > JAVA,JSP' 카테고리의 다른 글
JAVA 배열 정렬 예제 (0) | 2014.01.06 |
---|---|
JAVA 행렬 합곱 예제 (0) | 2014.01.06 |
JAVA Calendar #2 (0) | 2013.12.31 |
Calendar #1 (0) | 2013.12.31 |
JAVA 파일 검색 코드 (0) | 2013.12.28 |