예제)
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.BufferedReader;
public class Test3 {
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(
new InputStreamReader(System.in));
//년도가 4의 배수이고 100의 배수가 아니거나 400배수이면 2월 29일
// 서기 1년 1월 1일은 월요일입니다.
int []month={31,28,31,30,31,30,31,31,30,31,30,31};
int y,m,w,total;
do{
System.out.print("년도 ? ");
y=Integer.parseInt(br.readLine());
}while(y<1000); // 1000보다 작으면 재입력
do{
System.out.print("월 ? ");
m=Integer.parseInt(br.readLine());
}while(m<1 || m>12); // 1보다 작거나 12보다 크면 재입력
// y년도의 2월의 마지막 날짜 계산하기
if (y%4==0 && y%100!=0 || y%400==0)
month[1]=29; // 윤년
else
month[1]=28; // 평년
//1년 1우러 1일 ~ y년 m월 1일 까지의 전체 날수
total=(y-1)*365+(y-1)/4-(y-1)/100+(y-1)/400; // 365*해당년-1 + 4년에 한번씩 윤년 - 100의 배수마다 평년 + 400년의 배수마다 윤년
for(int i=0; i<m-1; i++) // 년을 제외한 해당년의 일수의 합
total+=month[i]; // 전체일수 계산됨
total+=1; // 해당 월의 1일까지 합해서 total을 만들어줌
System.out.printf("\t\t %d년 %d월\n",y,m);
System.out.println("=================================================");
System.out.println(" 일 월 화 수 목 금 토"); // 공백 4칸
System.out.println("=================================================");
//y년 m월 1일의 요일 구하기
w=total%7;
//1일 출력 전 앞의 공백처리
for(int i=0; i<w; i++)
System.out.print(" ");
// 1일에서 마지막 날짜까지 날짜 찍기
for(int i=1; i<=month[m-1]; i++) {
System.out.printf("%6d",i);
w++;
if(w%7==0)
System.out.println();
}
if(w%7!=0)
System.out.println();
System.out.println("=================================================");
}
}
결과) 년도와 월을 입력하면 해당 달력을 출력
'자바 > 문법' 카테고리의 다른 글
입력된 여러 숫자를 작은 순서대로 정리하는 프로그램 (0) | 2013.05.11 |
---|---|
배열을 이용한 요일 계산기 (0) | 2013.05.11 |
배열 사용방법과 향상된 for문 (0) | 2013.05.11 |
return문 (0) | 2013.05.09 |
label을 이용한 break문 (0) | 2013.05.09 |