오랜만에 찾아뵙는 블로거 워누입니다.

 

오늘 포스팅은 심심해서 만들어본 자바 달력 프로그램입니다.

생각나는 대로 만들어본거라 조금은 어설플 수 있지만 도움이 될 것 같으신 분들은 참고하셔도 좋을 것 같네요! ㅎㅎ

 

 

[코드 참조]

package standard;

import java.util.Scanner;

public class Calendar {

 public static void main(String[] args) {
      // TODO Auto-generated method stub
  
      Scanner sc = new Scanner(System.in);
  
      /*
       * monthSet은 각 달에 대한 날짜들을 저장한 배열,
       * year은 연도, month는 달, week는 요일, day는 일, i는 반복문을 사용하기 위한 변수.
       */
      int year=0, month=0, week=0, day=0, i=0; 
      int monthSet[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  
  
      while(true) {
       System.out.println("원하는 연도를 입력하세요. (0을 누르면 프로그램을 종료합니다.)");
       year = sc.nextInt();
       if(year==0) {
        System.exit(0);
        break;
       }
       System.out.println("원하는 달을 입력하세요.");
       month = sc.nextInt();
       if(month<1 || month>12) {
        System.out.println("1월에서 12월 사이의 달을 입력해주세요.");
        return;
       }
       System.out.println("");
   
       if(year%4 == 0 && year%100 != 0 || year%400 == 0) // 윤년의 조건.
        monthSet[1] = 29; // 윤년이면 2월 (monthSet[1])은 29일,
       else
        monthSet[1] = 28; // 윤년이 아니면 2월은 28일이다.
   
       // 01년 1월 1일부터 계산.
       day = (year-1)*365 + (year-1)/4 - (year-1)/100 + (year-1)/400;
       for(i=0;i<month-1;i++) {
        day += monthSet[i];  
       }
       week=day%7; // 구하고자 하는 달의 시작일(1일)의 요일을 구함.
   
       System.out.printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t\n", "월", "화", "수", "목", "금", "토", "일");   
       for(i=0;i<week;i++) {
        System.out.print("\t"); // 1일이 시작하기 전 공백을 위한 반복문.
       }
       for(i=1;i<=monthSet[month-1];i++) {
        System.out.printf("%d\t", i); // i를 입력한 달의 일수만큼 찍음.
        week++;   
        if(week%7 == 0)        // 요일이 일요일이 지나면
         System.out.println(); // 줄을 바꿈.
    
       }
       if(week%7 != 0) {
        System.out.println();
       }
      }
  
 }

}

 

코드는 생각보다는 간단하더라구요.

윤년을 반영하는 부분이 초보자분들에게는 어려울 것 같습니다.ㅎㅎ 아래는 결과화면인데요, 코드를 작성한 날짜와, 가장 최근 윤달이었던 달, 그리고 제가 태어난 생년월일을 맞추어보았습니다. 0을 누르면 종료하게 되어 있습니다!

 

 

.

[결과 화면]

 

.

혹시 과제 때 필요해서 들어오신 분들이라면 참고하셔도 좋습니다만, Ctrl+C,V 가 아니라 직접 코딩해보는 것을 추천합니다! 그래야 실력이 늘겠죠?

.

 

시간이 늦었으니 저는 이만 자러갈게요~ 안녕! 

+ Recent posts