티스토리 뷰

반응형

Work02: 무슨 요일?

/*========================================
 * ■■■  과제 2  ■■■ 
 * 사용자로부터 임의의 년도(정수)와 월(정수) 일(정수) 을 입력받아 
 * 무슨 요일인지 확인 결과를 출력해주는 프로그램을 작성한다. 
 * (클래스명 : Work02)
 * 
 * ※캘린더(Calendar) 클래스 사용 금지
 * ※BufferedReader 사용
 * ※올바른 입력이 아닐 경우, 재입력
 ========================================*/

// 실행 예)
// 임의의 연도 입력 : 0
// 임의의 연도 입력 : -2
// 임의의 연도 입력 : 1995
// 임의의 월 입력 : -10
// 임의의 월 입력 : 7
// 임의의 일 입력 : 32
// 임의의 일 입력 : 20

// >> 19995년 7월 20일은 목요일입니다.

package com.test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Work02
{

	public static void main(String[] args) throws IOException
	{
		String[] days = { "월", "화", "수", "목", "금", "토", "일" };		// 요일
		int [] dates = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };		// 현재 년의 월별 일수

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int yy = 0, mm = 0, dd = 0;
		int fullDays = 0, nowDay = 0;

		// 정상 범위의 연도가 나올 때까지 임의의 연도 입력
		while (yy <= 0 || yy > 9999)
		{
			System.out.print("임의의 연도 입력 : ");
			yy = Integer.parseInt(br.readLine());
		}

		// 윤년 여부에 따른 2월 일수 변경
		dates[1] = yy % 4 == 0 ? (yy % 100 == 0 ? (yy % 400 == 0 ? 29 : 28) : 29) : 28;
		
		// 정상 범위의 월이 나올 때까지 임의의 월 입력
		while (mm <= 0 || mm > 12)
		{
			System.out.print("임의의 월 입력 : ");
			mm = Integer.parseInt(br.readLine());
		}
		
		// 정상 범위의 일이 나올 때까지 임의의 일 입력
		while (dd <= 0 || dd > dates[mm-1])
		{
			System.out.print("임의의 일 입력 : ");
			dd = Integer.parseInt(br.readLine());
		}
		
	
		// 연도 계산
		for (int i = 1; i < yy; i++)
		{
			// 윤년일 경우 366일, 평년일 경우 365일
			fullDays += i % 4 == 0 ? (i % 100 == 0 ? (i % 400 == 0 ? 366 : 365) : 366) : 365;
		}
		
		// 월 계산
		for (int i = 1; i < mm; i++)
		{
			fullDays += dates[i-1];
		}
		
		// 일 계산
		fullDays += dd;
		
		// 요일 계산
		nowDay = fullDays % 7;
		
		// 결과 출력
		System.out.println(">> " + yy + "년 " + mm + "월 " + dd + "일은 " + days[nowDay-1] + "요일입니다.");
	}

}

/*
실행 결과)

임의의 연도 입력 : 0
임의의 연도 입력 : -7
임의의 연도 입력 : 2018
임의의 월 입력 : -11
임의의 월 입력 : 16
임의의 월 입력 : 1
임의의 일 입력 : 00
임의의 일 입력 : 35
임의의 일 입력 : 4
>> 2018년 1월 4일은 목요일입니다.
*/


반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함