IT/JAVA (17.12.18~)

23일 JAVA(23) - 자바 달력(JAVA Calendar)

만두토끼 2018. 2. 5. 12:12

import java.util.Scanner;


//년도와 월을 입력받아서 달력을 출력

public class CalenderMain {


public static void main(String[] args) {

try(Scanner sc = new Scanner(System.in)) {

//년도와 월 입력받기

System.out.print("년도:");

int year = sc.nextInt();

System.out.print("월:");

int month = sc.nextInt();

//합계를 구할 변수

int cnt = 0;

//year 이전 까지 지나온 날 수의 합계를 구하기

//년은 1부터 시작

for(int i=1; i<year; i=i+1) {

//윤년이면 366을 더하고 윤년이 아니면 365를 더하기

if(i%4==0 && i%100!=0 || i%400==0) {

cnt = cnt + 366;

}

else {

cnt = cnt + 365;

}

}

//지나온 월 의 날짜수를 더하기

//각 월의 날짜수를 갖는 배열을 생성

//인덱스를 맞추기 위해서 첫번째 값을 0으로 설정

int [] days = {0,31,28,31,30,31,30,31,31,30,31,30,31};

//입력한 년도가 윤년이면 days의 2는 29로 변경

if(year%4==0 && year%100!=0 || year%400==0) {

days[2] = 29;

}

//월 이전까지의 날짜 수 더하기

for(int i=0; i<month; i=i+1) {

cnt = cnt + days[i];

}

//확인방법 - cnt + 1 한 값을 7로 나눈 나머지가 입력한

//년도와 월의 1일의 요일입니다.

//일요일이면 0 월요일이면 1

//System.out.println((cnt+1)%7);

//날짜 값을 저장할 배열을 생성

int [][] cal = new int[6][7];

int start = (cnt + 1) % 7;

//달력은 1일 부터 자신의 월 수에 해당하는 일까지

for(int i=1; i<= days[month]; i=i+1) {

cal[start/7][start%7] = i;

start = start + 1;

}

System.out.println("   일   월  화  수  목   금   토");

for(int i=0; i<42; i=i+1) {

System.out.printf("%3d", cal[i/7][i%7]);

if(i % 7 == 6) {

System.out.printf("\n");

}

}

}catch(Exception e) {

System.out.println("예외:" + e.getMessage());

e.printStackTrace();

}

}

}




'IT > JAVA (17.12.18~)' 카테고리의 다른 글

23일 JAVA(23)  (0) 2018.01.24
22일 JAVA(22)  (0) 2018.01.24
21일 JAVA(21)  (0) 2018.01.23
20일 JAVA(20)  (0) 2018.01.16
19일 JAVA(19)  (0) 2018.01.16