[문제] 만년달력
[클래스]
CalendarEx
[필드]
필드는 원하는 것으로 직접 잡기
[메소드]
생성자 : 년도, 월을 입력
- 기본생성자 : 입력
- 메소드 : calc() -> 매달 1일의 요일이 무엇인지?
(Calendar에 메소드를 찾아서 수행)
-> 매달 마지막이 28, 29, 30, 31 무엇인지? (Calendar에 메소드를 찾아서 수행)
display() -> 출력
[클래스]
CalendarMain
package abstract_;
import java.util.Scanner;
import java.util.Calendar;
class CalendarEx{
private int year, month, week, lastDay;
public CalendarEx(){
Scanner scan = new Scanner(System.in);
System.out.print("년도 입력 : ");
year = scan.nextInt();
System.out.print("월 입력 : ");
month = scan.nextInt();
}
public void calc(){
//시스템 날짜를 기준으로 생성
//=> 오늘 날짜 2024.07.18이 기준 ★★★★★ -> 바꿔줘야함.
Calendar cal = Calendar.getInstance(); //메소드 이용
//cal.set(Calendar.YEAR, year);
//cal.set(Calendar.MONTH, month-1); //1월-0/2월-1
//cal.set(Calendar.DAY_OF_MONTH, 1);
cal.set(year, month-1, 1); //오버로드 된거
week = cal.get(Calendar.DAY_OF_WEEK); //1일의 요일 구하기 week가 7의배수
//System.out.println(week); -> 탭 개수 확인
lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH); //월의 마지막 일 구하기
}
public void calc(){
cal.set(year,month-1,1);
}
- cal 객체의 날짜를 사용자가 입력한 연도와 월의 첫째 날로 설정한다.
- month - 1을 사용하는 이유는 Calendar 클래스에서 월이 0부터 시작하기 때문이다. 예를 들어, 1월은 0, 2월은 1로 표현된다.
public void display() {
System.out.println("일\t월\t화\t수\t목\t금\t토");
for(int i=1; i<week; i++) {
System.out.print("\t");
}
for(int i=1; i<=lastDay; i++) {
System.out.print(i + "\t");
if((week) % 7 ==0)
System.out.println();
week++;
}
}
}
- 첫 번째 for 루프는 1일이 시작하는 요일까지 빈 공간을 출력한다.
- 두 번째 for 루프는 날짜를 출력하며, 일주일이 끝날 때마다 줄바꿈을 한다.
public class CalendarMain {
public static void main(String[] args) {
CalendarEx c = new CalendarEx();
c.calc();
c.display();
}
}
년도 입력 : 2024
월 입력 : 7
일 월 화 수 목 금 토
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
이 코드는 꽤나 머리를 굴려야되는 문제인데 어려워서 강사님 설명을 들어봐야 될 것 같다,,,
'HOMEWORK' 카테고리의 다른 글
DAY 8 - HOMEWORK 치환 / 사지선다형 (2024.07.12) (0) | 2024.08.12 |
---|---|
DAY 9 - HOMEWORK - 과일판매량 (2024.07.15) (0) | 2024.08.12 |
DAY 11 - HOMEWORK - SungJukDTO / SungJuk (2024.07.17) (0) | 2024.08.12 |
DAY 29 - CSS HOMEWORK (2024.08.12) (0) | 2024.08.12 |
DAY 28 - ORACLE DB HOMEWORK (2024.08.09) (0) | 2024.08.11 |