반응형

 

문제

 

package kr.or.ddit.homework;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Scanner;
import java.util.Set;

import kr.or.ddit.LunarCalendar;

public class HomeWork17 {

    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        int last = cal.getActualMaximum(Calendar.DATE);
        while(true){
        	SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
            System.out.println("--------------------"+cal.get(Calendar.YEAR)+"년 "+(cal.get(Calendar.MONTH)+1)+"월------------------------");
            System.out.println("<이전달\t\t\t\t\t\t다음달>");
            System.out.println("일\t월\t화\t수\t목\t금\t토");
            System.out.println("-----------------------------------------------------");
            cal.set(Calendar.DATE, 1);
            int day = cal.get(Calendar.DAY_OF_WEEK);
            for (int i = 1; i <day; i++) {
                System.out.print("\t");
            }
            for (int i = 1; i <= last; i++) {
                cal.set(Calendar.DATE, i);
                day = cal.get(Calendar.DAY_OF_WEEK);
				if (day == Calendar.SATURDAY) {
					System.out.println(i);
				} else {
					System.out.print(i + "\t");
				}
            }
            System.out.println();
            Scanner sc = new Scanner(System.in);  
            String str = sc.nextLine();
            if(str.equals("<")) {
                cal.add(Calendar.MONTH, -1);
                last = cal.getActualMaximum(Calendar.DATE);
            }else if(str.equals(">")){
                cal.add(Calendar.MONTH, 1);
                last = cal.getActualMaximum(Calendar.DATE);
            }
        }
    }

}

 

 

 

정답

 

package kr.or.ddit.homework;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

public class HomeWork17 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		HomeWork17 obj = new HomeWork17();
		obj.process();
	}
	
	public void process() {
		/*   -----2023 12월 -- 
		 *   <이전달          다음달>
		 *   일 월  화 수 목 금 토 
		 *              1 2
		 *   3 4 5 6 7 8 9
		 *   
		 *  -----------------------             
		 *   < 이전달           > 다음달
		 *               
		 */
		Calendar cal = Calendar.getInstance();
		while(true) {
			// 해당 월에 마지막 일
			int monthLastDay = cal.getActualMaximum(Calendar.DATE);
			// 해당 주에 현재요일
			// SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, and SATURDAY.
			//  1 ~7
            
			// 년도와 월
			System.out.println("----------------------" + (cal.get(Calendar.YEAR))  + "년 "+ (cal.get(Calendar.MONTH)+1) + "월 ----------------------");
			System.out.println("<이전달\t\t\t\t\t\t다음달>");
			System.out.println("일\t월\t화\t수\t목\t금\t토");
			
			// 1일의 요일 확인
			cal.set(Calendar.DATE, 1); // 1일의 요일 확인
			SimpleDateFormat sdf2 = new SimpleDateFormat("dd");
			Date d2 = cal.getTime();
			int day = cal.get(Calendar.DAY_OF_WEEK);
			
			// 1일의 요일
//			System.out.println(day);
			
			int jan = 0; // 줄 넘김
			int n = 1; // 요일
			int day_long = day; // 첫줄 공백
			
			for(int i=0; i<monthLastDay+day_long-1; i++) {
				if(day != 1) {
					System.out.print("\t");
					day--;
					jan++;
				}
				else {
					System.out.print(n + " \t");
					jan++;
					if(jan == 7) {
						System.out.println();
						jan = 0;
					}
					n++;
				}
			}
			
			// 달 이동
			System.out.println();
			String input = sc.nextLine();
			if(input.equals("<")) {
				cal.add(Calendar.MONTH, -1);
			}
			if(input.equals(">")) {
				cal.add(Calendar.MONTH, 1);
			}
		}
	}
}

 

결과 화면1

 

 

반응형

'자바' 카테고리의 다른 글

[Java 초급] 21.5장 테스트  (0) 2023.12.30
[Java 초급] 21장 컬렉션 프레임워크  (0) 2023.12.30
[Java 초급] 20장 달력  (0) 2023.12.29
[Java 초급] 19장 예외  (0) 2023.12.28
[Java 초급] 18.5장 테스트  (0) 2023.12.27