seunghyun Note
JAVA 자동 Calendar 만들기 본문
728x90
반응형
연도와 월을 입력하면 자동으로 달력이 나오는 프로그램. 생각할 것이 많다.
연도와 월을 입력하면 자동으로 달력이 나오는 프로그램.
생각할 것이 많다.
생각해 본 것
1. 윤년 계산
2. 달력의 시작점과 끝점(윤년 계산)을 계산하기
3. 기본적인 세팅
해결
CalendarMain
- Calendar의 main class 이다.
- 연도와 월을 입력받아 CalendarEx class에 만든 setting function으로 데이터를 넣는다.
public class CalendarMain {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("년도 입력 : ");
int year = sc.nextInt();
System.out.print("월 입력 : ");
int month = sc.nextInt();
CalendarEx.setting(year, month);
}
}
CalendarEx
1. 캘린더 객체를 사용하기 위해서는 getInstance()를 사용한다.
1-1 Calendar 자체를 가져오면 abstract 객체이기 때문에 자식 객체를 불러와야 한다. -> 그렇기 때문에 getInstance()를 사용해야 한다.
2. \t
를 통해 기본적인 세팅을 한다.
3. calendar.set(year,month-1,start)
사용하기
4. 달력의 시작을 찾는다. get(Calendar.DAY_OF_WEEK)
5. getActualMaximum : 마지막 일 (현재 날짜 기준 최대 수) - 윤년 계산까지 된 정보
import java.util.Calendar;
import java.util.Scanner;
class CalendarEx {
public static void setting(int year, int month) {
//📌 1. 캘린더 객체를 사용하기 위해서는 getInstance()를 사용한다.
Calendar cal = Calendar.getInstance();
// 1.1 Calendar cal = new Calendar(); error
//📌 2. \t를 통해 기본적인 세팅을 한다.
System.out.printf("\t\t%d년 %d월\n", year, month);
System.out.println();
System.out.printf("일\t월\t화\t수\t목\t금\t토\n");
// 📌 3. calendar.set(year,month-1,start) 사용하기
// 함수가 1월 ->2월 이런식으로 진행되기떄문에 -1
cal.set(year, month - 1, 1);
//📌 4. 달력의 시작을 찾는다. get(Calendar.DAY_OF_WEEK)
// 시작의 날짜를 알 수 있다.
int start = cal.get(Calendar.DAY_OF_WEEK); // 1일의 시작 번호를 입력받는다.
// 일 1
// 월 2
// 화 3
// 수 4
// 목 5
// 금 6
// 토 7
// 시작점까지 칸 수를 이동 시킨다.
for (int i = 1; i < start; i++) {
System.out.print("\t");
}
// 📌 5. getActualMaximum : 마지막 일 (현재 날짜 기준 최대 수) - 윤년 계산까지 된 정보
for (int i = 1; i <= cal.getActualMaximum(Calendar.DATE); i++) {
// 칸 수를 이동시킨다.
System.out.printf("%d\t", i);
if (start % 7 == 0) {
// 한 줄이 완성되면 다음줄로 이
System.out.println();
}
start++;
}
}
}
전체 코드
package abstract_;
import java.util.Calendar;
import java.util.Scanner;
class CalendarEx {
public static void setting(int year, int month) {
Calendar cal = Calendar.getInstance();
System.out.printf("\t\t%d년 %d월\n", year, month);
System.out.println();
System.out.printf("일\t월\t화\t수\t목\t금\t토\n");
// year년 month-1월 1일
cal.set(year, month - 1, 1);
// 시작의 날짜를 알 수 있다.
int start = cal.get(Calendar.DAY_OF_WEEK); // 1일의 시작 번호를 입력받는다.
// 일 1
// 월 2
// 화 3
// 수 4
// 목 5
// 금 6
// 토 7
// 시작점까지 칸 수를 이동 시킨다.
for (int i = 1; i < start; i++) {
System.out.print("\t");
}
// getActualMaximum : 마지막 일 (현재 날짜 기준 최대 수) - 윤년 계산까지 된 정보
for (int i = 1; i <= cal.getActualMaximum(Calendar.DATE); i++) {
// 칸 수를 이동시킨다.
System.out.printf("%d\t", i);
if (start % 7 == 0) {
// 한 줄이 완성되면 다음줄로 이
System.out.println();
}
start++;
}
}
}
public class CalendarMain {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("년도 입력 : ");
int year = sc.nextInt();
System.out.print("월 입력 : ");
int month = sc.nextInt();
CalendarEx.setting(year, month);
}
}
728x90
반응형
'스터디 > JAVA' 카테고리의 다른 글
DB 연결을 통한 학교 관리 시스템 (0) | 2024.01.11 |
---|---|
JAVA 성적 DTO 만들기 (1) | 2024.01.05 |