-
[JAVA/자바] 달력 ( Calendar ) 만들기Language/Java 2018. 3. 17. 19:04반응형
달력 Calendar
만들고 싶은 기능
1. 실제 달력처럼 년도와 월이 확인 가능해야 한다.
2. 재시도 기능
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106import java.io.*;import java.util.*;class MyCalendar{BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String line;int yearInt;int monthInt;MyCalendar(){input();showCalendar();replay();}void input(){System.out.println("보고싶은 년도와 월을 입력해주세요.");System.out.print("예시 :: XXXX XX\n입력 >> ");try{line = br.readLine();line = line.trim();if(line.indexOf(" ") != -1){cut(line);}else{System.out.println("예시처럼 입력해주세요");input();}}catch(IOException ioe){}catch(NumberFormatException nfe){System.out.println("제대로 입력하였는지 확인해주세요.\n");input();}}void cut(String str){int idx = str.indexOf(" ");String yearStr = str.substring(0 , idx);String monthStr = str.substring(idx + 1);monthStr = monthStr.trim();yearInt = Integer.parseInt(yearStr);monthInt = Integer.parseInt(monthStr);if(yearInt < 1900){System.out.println("자바는 1900년 이전을 보여주지 않습니다.");System.out.println("처음 화면으로 돌아갑니다.\n");input();}if(monthInt>12 || monthInt<1){System.out.println(">> 1 ~ 12 월 사이의 숫자를 입력해주세요.\n");input();}}void showCalendar(){Date date = new Date();Date useDate = new Date(yearInt-1900 , monthInt-1 , 1);date.setYear(yearInt);date.setMonth(monthInt);date.setDate(0);// API set 자동으로 변환 / 31일을 오버해버리면 자동으로 1일로 변환시켜준다.int dateI = date.getDate();int yearI = useDate.getYear();int monthI = useDate.getMonth();int dayI = useDate.getDay();int count = 1;System.out.println("\n\n\t[\t\t\t" + (yearI+1900) + "년\t" + (monthI+1) + "월\t\t\t]\n");System.out.println("\tSUN\tMON\tTUE\tWND\tTHU\tFRI\tSAT\t");for(int i=0 ; i<dateI ; i++){for(int j=0 ; j<8 ; j++){if(j == 7){System.out.println("\n\n");}else if(count > dateI){return;}else if(dayI == j){System.out.print("\t" + count);count++;dayI++;if(dayI == 7){dayI = 0;}}else{System.out.print("\t");}}}}void replay(){System.out.println("\n\n\n ┌ 다시 하시겠습니까? (y/n) ┐\n │ 아무키를 누르면 종료 │\n └───────────────┘");System.out.println(" │ y를 누르면 다시 │");System.out.print(" >> ");try{line = br.readLine();line = line.trim();if(line.equalsIgnoreCase("y")){new MyCalendar();}else{System.exit(0);}}catch(IOException ioe){}}public static void main(String[] args){MyCalendar mc = new MyCalendar();}}cs 윤달에 대해서는 자동으로 잡아주기 때문에 신경쓰지 않아도 된다.
\n 은 엔터를 친것과 같이 줄 내림이다.
\t 는 탭만큼 거리를 뛰운다.
반응형'Language > Java' 카테고리의 다른 글
[JAVA/자바] 디렉토리 복사 (0) 2018.04.28 [JAVA/자바] 파일 이동 ( 복사 / 삭제 ) (0) 2018.03.19 [JAVA/자바] 제비뽑기 다수 인원 뽑기 [가변배열/Vector/Hashtable] (0) 2018.03.15 [JAVA/자바] 제비뽑기 확률 조정 100% 까지 [가변배열/Vector/ArrayList] (0) 2018.03.14 [JAVA/자바] 제비뽑기 확률 조정 [가변배열/배열] (0) 2018.03.14