티스토리 뷰
※[JAVA] 만년달력
○ 만년달력을 Calendar클래스를 이용하지 말고 구현하시오.
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Test100
{
public static void main(String[] args) throws IOException
{
// BuffreredReader 클래스 인스턴스 생성
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 배열 선언 및 초기화
// 각 달이 담고있는 마지막 날짜(매 월의 최대 날짜)
int[] days = {31,28,31,30,31,30,31,31,30,31,30,31};
// 확인
//System.out.println(days.length);
int nalsu, y, m, w;
do
{
System.out.print("『연도』를 입력하세요 : ");
y = Integer.parseInt(br.readLine());
}
while (y<1);
do
{
System.out.print("『월』을 입력하세요 : ");
m = Integer.parseInt(br.readLine());
}
while (m<1 || m>12);
//-------------------------------여기까지 수행하면 유효한 년도, 월 입력한 상태~!!!
if((y%4==0 && y%100!=0) || y%400==0)
{
days[1] = 29;
}
//-- else 구문은
// 현재 days[1] 가 28로 입력되어 있는 상태이기 때문에
// 생략이 가ㅏ능한 구문이 된다.
// 1년 1월 1일 ~ 입력받은년도 이전년도의 12월 31일 까지의
// 날 수 계산
nalsu = (y-1)*365 + (y-1)/4 - (y-1)/100 + (y-1)/400;
// 입력받은년도(해당년도) 1월 1일 ~ 입력한 월의 이전 월 까지의
// 날 수 누적 연산
for(int i=0;i<(m-1);i++)
{
nalsu+=days[i];
}
//입력받은 월의 1일
nalsu +=1; //++nalsu
// 확인
//System.out.println(nalsu);
//-----------------------여기가지 수행하면 모든 날 수에 대한 종합 완료~!!!
// 요일 산출
// : 입력받은 월의 1일이 무슨 요일인지 확인하기 위한 연산
w = nalsu%7;
//System.out.println(w); //--==>> 1 -> 2019년 7월 1일 ->월요일
// 출력(달력 그리기)
System.out.println();
System.out.println("\t [ "+ y+"년 "+m+"월 ]");
System.out.println();
System.out.println();
System.out.println(" 일 월 화 수 목 금 토"); //두 칸 공백
System.out.println("============================");
// 특정 요일부터 1일이 출발할 수 있도록 공백 발생(지정)
for (int i=1; i<=w; i++)
{
System.out.print(" "); // 네 칸 공백
}
// 확인
//System.out.printf("%4d",1);
// 해당 월(입력한 월)의 날짜만 출력될 수 있도록 반복문 구성
for (int i=1; i<=days[m-1];i++)
{
System.out.printf("%4d",i);
w++;
//-- 날짜가 증가하는 만큼 요일도 함께 증가할 수 있도록 처리
if(w%7==0)//일요일
{
System.out.println(); // 개행
}
}
// 달의 마지막 날짜가 출력 형식을 모두 채웠을 경우
// 이미 일요일 개행이 이루어졌기 때문에
// 이 경우에는 추가 개행을 하지 않도록 처리
if(w%7!=0)
System.out.println();
System.out.println("============================");
}
}
※실행결과
『연도』를 입력하세요 : 2019
『월』을 입력하세요 : 8
[ 2019년 8월 ]
일 월 화 수 목 금 토
============================
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
============================
계속하려면 아무 키나 누르십시오 . . .
'국비지원Study > Java' 카테고리의 다른 글
[JAVA] 선택정렬(Selection Sort) (0) | 2019.03.10 |
---|---|
[JAVA] 주민등록번호 유효성 검사 (0) | 2019.03.09 |
[JAVA] 가위바위보 게임 (0) | 2019.03.09 |
[JAVA] 해당날짜의 요일구하기 (0) | 2019.03.09 |
[JAVA] 별찍기(피라미드,역파리미드,다이아몬드) (0) | 2019.03.09 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 전공
- 자료구조
- 배열
- highlight.js
- Nomad Coders
- 별찍기
- 책리뷰
- 설치방법
- Git
- 개발자
- 반복문
- 리액트
- C
- 자바
- Python
- 알고리즘
- 전문대
- 무료강의
- 초보개발자
- 인스타그램 클론
- Velopert
- It
- 노마드코더
- 블로그관리
- Java
- 국비지원
- Tistory
- React
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함