[java] 달력만들기

쁘루뿅·2022년 1월 29일
0
post-thumbnail

[목 표] java로 콘솔창에 달력 그리기

[TODO]

  • 년, 월 입력하기
  • 입력된 년이 윤년인지 체크
  • 입력된 월의 마지막 일 배열만들기
  • 입력된 월의 첫번째 요일 구하기

[1] main

static char[] weeks = {'일','월','화','수','목','금','토'};
static int[] lastDay  = {31,28,31,30,31,30,31,31,30,31,30,31};
		
	public static void main(String[] args) {
		makeCalendar(2020, 2);
	}

[2] getMonth(int year, int month)

: 월이 바르게 입력되었는지 체크
private static int getMonth(int year, int month) {
		if(month<1 || month>12) {
			System.out.println("[log] month를 잘못입력하였습니다. ");			
		}else {
			System.out.println("[log] month : "+month);
		}
		return month;
	}

[3] getFirstDay(int year, int month)

: 입력 월로부터 첫번째 요일 구하기
private static int getFirstDay(int year, int month) {
		int firstDay = (year-1)*365 + (year-1)/4 - (year-1)/100 + (year-1)/400;
		for(int i=0;i<month-1;i++) {
			firstDay += lastDay[i];
		}
		return firstDay;
	}

[4] getLasyDay(int year, int month)

: 입력한 월로부터 해당 월의 마지막일 구하기
private static int[] getLastDay(int year, int month) {
		// TODO Auto-generated method stub
		//윤년체크 포함
		if(year%4 == 0 && year%100 != 0 || year%400 == 0) {
			lastDay[1] = 29;
		}else {
			lastDay[1] = 28;
		}
		return lastDay;
	}

[5] makeCalendar(int year, int month)

: 달력 그리기
private static void makeCalendar(int year, int month) {
		// TODO Auto-generated method stub
		System.out.println("year, month"+year+", "+month);
		
		int firstDay = getFirstDay(year, month);
		lastDay = getLastDay(year, month);
		month = getMonth(year, month);
		int week = firstDay%7;
		
		>System.out.printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t\n","월","화","수","목","금","토","일");
		
		for(int i=0;i<week;i++) {
			System.out.print("\t");
		}
		for(int i=1;i<=lastDay[month-1];i++) {
			System.out.printf("%d\t",i);
			week++;
			if(week%7 == 0)
				System.out.println();
		}
		if(week%7 != 0) {
			System.out.println();
		}		
	
	}

[참고] https://seoneu.tistory.com/14

profile
개발지겸 엔지니어 oO(새 기기를 가지고 싶다)

0개의 댓글