#자바 #배열 #윤년 #평년 #달력 #캘린더
public static void main(String[] args) throws NumberFormatException, IOException {
// 년와 월을 입력 받아 달력을 출력
BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
System.out.print("년을 입력해주세요 : ");
int year = Integer.parseInt(read.readLine());
System.out.print("월을 입력해주세요 : ");
int month = Integer.parseInt(read.readLine());
// 해당 월의 1일까지의 일자의 갯수
int[] maxDate = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if(year % 4 ==0 && year % 100 !=0 || year % 400 ==0) {
maxDate[1]=29; // 윤년일 경우
}
// 작년
int lastYear = year-1;
// 작년까지 발생한 윤년의 횟수
int leapYear_cnt = (lastYear/4) - (lastYear/100) + (lastYear/400);
// 해당년의 해당월의 1일까지의 일자 수 구하기
int dayOfYear = 1;
for(int i=0; i<month-1; i++) {
dayOfYear += maxDate[i];
}
// 해당 월의 첫번째 날짜의 요일
int dayOfweek = (lastYear + leapYear_cnt + dayOfYear)%7;
System.out.printf("%d년 %02d월\n", year, month);
System.out.printf("일\t월\t화\t수\t목\t금\t토\n");
// 공백 출력
for(int i =0; i<dayOfweek; i++) {
System.out.print("\t");
}
// 월에 따른 날짜 출력 조건
int lastDay = maxDate[month-1];
// 날짜 출력
for(int i = 1; i<=lastDay; i++) {
System.out.print(i + "\t");
if((dayOfweek+i)%7 ==0) {
System.out.println();
}
}
}
'IT > JAVA' 카테고리의 다른 글
[JAVA/자바] 메서드 오버로딩(Method Overloading) 알아보기 (0) | 2018.08.27 |
---|---|
[JAVA/자바] 학생의 수(n명)를 받아 개인 정보 출력하기 (0) | 2018.08.27 |
[JAVA/자바] 배열을 사용하여 국어, 영어, 수학 점수 입력 받아 총점 평균 구하기 (0) | 2018.08.24 |
[JAVA/자바] 1~45 난수(Math.random)를 발생시켜 로또(lotto) 번호 6개 출력하기 (0) | 2018.08.24 |
[JAVA/자바] 0~9 범위 내의 숫자에서 배열에 들어있는 숫자들이 각각 몇개 있는지 카운트 세기 (0) | 2018.08.15 |