Language/Java
[JAVA/자바] 달력 ( Calendar ) 만들기
reifier.tistory.com 으로 이전하였습니다.
2018. 3. 17. 19:04
반응형
달력 Calendar
만들고 싶은 기능
1. 실제 달력처럼 년도와 월이 확인 가능해야 한다.
2. 재시도 기능
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | import 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 는 탭만큼 거리를 뛰운다.
반응형