Calendar

"Java Stuty"

Posted by Chungman on March 25, 2021

Calendar 예제

CalendarMain

1
2
3
4
5
6
7
8
9
10
11
12
package Java0325.Lecture14.Homework;

public class CalendarMain {

	public static void main(String[] args) {
		
		CalendarView view = new CalendarView();
		view.process();
		
	}

}

CalendarUtil

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package Java0325.Lecture14.Homework;

import java.util.Calendar;

public class CalendarUtil {

	
	public void showDayByYear(int year){
		
		for(int month = 1; month <= 12; month++) {
			showDayByMonth(year, month);
		}
	}
	
	public void showDayByMonth(int year, int month) {
// 		해당하는 달의 1일이 몇요일인지? 해당하는 달의 마지막날은 며칠인지?
		Calendar c = Calendar.getInstance();
		
		c.set(year, month-1, 1);	// 해당월의 1일이 몇 요일인지 알려면 date를 1로 설정
		
		// month/1의 요일?
		int startday = c.get(Calendar.DAY_OF_WEEK);
		// month/마지막날 며칠까지 있어?
		int lastday = c.getActualMaximum(Calendar.DAY_OF_MONTH);
		
		System.out.println("\t\t   << " + year + "년" + month + "월 >>");
		showDay(startday, lastday);
	}
	
	private void showDay(int startday, int lastday) {
		System.out.println("----------------------------------------------------");
		System.out.println("일\t월\t화\t수\t목\t금\t토");
		System.out.println("----------------------------------------------------");
		int cnt = 0;
		for(int i = 0; i < startday-1; i++) {
			System.out.print("\t");
			cnt++;
		}
		for(int day = 1; day <= lastday; day++) {
			System.out.print(day + "\t");
			if(++cnt % 7 == 0) {
				System.out.println();
			}
		}
		if(cnt % 7 != 0) {
			System.out.println();
		}
		System.out.println("----------------------------------------------------");
	}
}

CalendarView

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package Java0325.Lecture14.Homework;

import java.util.Scanner;

public class CalendarView {

	private Scanner sc;
	
	public CalendarView() {
		sc = new Scanner(System.in);
	}
	
	public int getInt(String msg) {
		
		System.out.print(msg);
		int no = sc.nextInt();
		sc.nextLine();
		
		return no;
	}
	
	public void process() {
		
		CalendarUtil util = new CalendarUtil();
		
		loop : while(true) {
			int command = getInt("항목을 선택하세요(1.특정년도 2.특정월 3.종료) => ");
		
			int year, month;
			switch(command) {
			case 1 :
				System.out.println("1번선택");
				year = getInt("연도를 입력하세요. => ");
				util.showDayByYear(year);
				break;
			case 2 :
				System.out.println("2번선택");
				year = getInt("연도를 입력하세요. => ");
				month = getInt("월을 입력하세요. => ");
				util.showDayByMonth(year, month);
				break;
			case 3 :
				System.out.println("프로그램을 종료합니다.");
				System.exit(0);			// public static형의 System클래스의 메소드 exit()
//				break loop;	
			}
		}
	}

	
}