쌍용강북교육센터/7월
! 복습아직 안함 ! 0709_Ex17_calendar : 년, 월을 입력 받아 달력 만들기
호쏘2
2021. 7. 12. 03:26
2021년 7월 : 네이버 통합검색
'2021년 7월'의 네이버 통합검색 결과입니다.
search.naver.com
public static void main(String[] args) {
// 년, 월 입력 받아 달력 만들기
Scanner sc = new Scanner(System.in);
int[] months = new int[] {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int y, m;
int tot;
int w;
do {
System.out.print("년도 ? ");
y = sc.nextInt();
} while(y<1);
do {
System.out.print("월 ? ");
m=sc.nextInt();
} while(m<1 || m>12);
months[1] = (y%4==0 && y%100!=0) || (y%400==1) ? 29 : 28;
// 윤년이면 2월이 29일 이므로
tot = (y-1)*365 + (y-1)/4- (y-1)/100 + (y-1)/400;
//전체날수
for(int i=0; i<m-1; i++) {
tot += months[i];
}
tot+= 1;
// 1년 1월 1일 ~ y년 m월 1일까지 전체 날수
// 요일 구하기
w = tot % 7; // 일~토는 7일 이니까 나누기 7을 하는거.
System.out.printf("\n\t%d년 %d월\n", y, m);
System.out.println(" 일 월 화 수 목 금 토");
System.out.println("-------------------------------");
for(int i=0; i<w; i++) {
System.out.print(" ");
} // 첫 주 공백 만들기
for(int i=1; i<=months[m-1]; i++) {
System.out.printf("%4d", i);
if(++w % 7 ==0) { // 토요일까지 찍고 행바꾸기
System.out.println();
}
}
if (w%7 !=0) {
System.out.println(); // 마지막날이 마지막주 토요일아니면 행바꿔라
//아니면 --- 가 마지막 날 옆에 출력
}
System.out.println("-------------------------------");
sc.close();
}
년도가 4의 배수이고 100의 배수가 아니거나 400의 배수이면 2월이 29일, 1년은 366
나머지는 2월이 28일, 1년은 365
서기 1년 1월 1일은 월요일
먼저
1) 1.1.1 ~ 입력한 년.입력한 월.1
1년 1월 1일 부터 입력한 년의 그 전해 까지의 일수를 구한다. (21년일시 20년 까지의 일수)
2) 입력한 년.1.1~입력한 년. 입력한 월.1
입력한 년 1월 1일 부터 입력한 년의 입력한 월까지의 일수를 구한다. (21년 일시 21년 1월 1일~ 21년 입력한 달까지의 일수)