우당탕탕 개발일지
10일차_과제 본문
반응형
1. 만년달력
[클래스] CalendarEx
[필드] 필드는 원하는 것으로 직접 잡기
[메소드]
생성자 : 년도, 월을 입력
- 기본생성자 : 입력
- 메소드 : calc() -> 매달 1일의 요일이 무엇인지? (Calendar에 메소드를 찾아서 수행)
-> 매달 마지막이 28, 29, 30, 31 무엇인지? (Calendar에 메소드를 찾아서 수행)
display() -> 출력
[클래스] CalendarMain
[실행결과]
년도 입력 : 2024 년도 입력 : 2000
월 입력 : 1 월 입력 : 2
일 월 화 수 목 금 토 일 월 화 수 목 금 토
1 2 3 4 5 6 1 2 3 4 5
7 8 9 10 11 12 13 6 7 8 9 10 11 12
14 15 16 17 18 19 20 13 14 15 16 17 18 19
21 22 23 24 25 26 27 20 21 22 23 24 25 26
28 29 30 31 27 28 29
*/
코드
CalendarMain.java
package homework;
public class CalendarMain {
public static void main(String[] args) {
CalendarEx c = new CalendarEx();
c.calc();
c.display();
}
}
CalendarEx.java
package homework;
import java.util.Calendar;
import java.util.Scanner;
public class CalendarEx {
private Calendar[] cal = new Calendar[2];
private int[] year = new int[cal.length];
private int[] month = new int[cal.length];
private int[] dayOfWeek = new int[cal.length];
private int[] lastDay = new int[cal.length];
public CalendarEx() {
Scanner sc = new Scanner(System.in);
// 입력
for(int i=0; i<cal.length; i++) {
System.out.print("년도 입력 : ");
this.year[i] = sc.nextInt();
System.out.print("월 입력 : ");
this.month[i] = sc.nextInt();
}
}
public void calc() {
// 날짜 설정
for(int i=0; i<cal.length; i++) {
cal[i] = Calendar.getInstance();
cal[i].set(Calendar.YEAR, this.year[i]); // 년도 설정
cal[i].set(Calendar.MONTH, this.month[i]-1); // 월 설정
cal[i].set(Calendar.DATE, 1); // 1일 설정
dayOfWeek[i] = cal[i].get(Calendar.DAY_OF_WEEK); // 요일 구하기
lastDay[i] = cal[i].getActualMaximum(Calendar.DAY_OF_MONTH); // 해당 달의 마지막 날
}
}
public void display() {
int j=0;
System.out.println("\n일 월 화 수 목 금 토\t일 월 화 수 목 금 토");
// cal[0] : 1일까지 띄어쓰기
for(int c=1; c<this.dayOfWeek[0]; c++) {
System.out.print(" ");
}
// cal[0] : 일짜 출력
for(int i=1; i<this.lastDay[0]+1; i++) {
cal[0].set(Calendar.DAY_OF_MONTH, i);
System.out.print(i);
if(i < 10) System.out.print(" ");
else System.out.print(" ");
// cal[0] : 줄 바꿈
if(cal[0].get(Calendar.DAY_OF_WEEK) % 7 == 0 || i == this.lastDay[0] ) {
if(i == this.lastDay[0]) {
for(int c = cal[0].get(Calendar.DAY_OF_WEEK); c<7; c++) {
System.out.print(" ");
}
}
// cal[1] : 출력
System.out.print("\t");
for(j=j+1; j<this.lastDay[1]+1; j++) {
if(j==1) {
// cal[1] : 1일까지 띄어쓰기
for(int c=1; c<this.dayOfWeek[1]; c++) {
System.out.print(" ");
}
}
// cal[1] : 일짜 출력
cal[1].set(Calendar.DAY_OF_MONTH, j);
System.out.print(j);
if(j < 10) System.out.print(" ");
else System.out.print(" ");
if(cal[1].get(Calendar.DAY_OF_WEEK) % 7 == 0) {
System.out.println();
if(i != this.lastDay[0])break;
else System.out.print("\t\t\t");
}
}
}
}
}
}
출력화면
반응형