티스토리 뷰
반응형
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일은 목요일입니다.
*/
반응형
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
[JAVA] 교육 3일차 과제 - Work03: 2의 배수? 3의 배수? (0) | 2018.01.04 |
---|---|
[JAVA] 교육 3일차 (0) | 2018.01.04 |
[JAVA] 교육 2일차 과제 - Work01: 윤년? 평년? (0) | 2018.01.04 |
[JAVA] 교육 2일차 (0) | 2018.01.04 |
[JAVA] 교육 1일차 (0) | 2018.01.04 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 빅데이터 기초
- Private Data
- docker
- 코딜리티
- Hyperledger Fabric v1.2
- 암브로셔스
- codility
- javascript
- 직딩잇템
- Hyperledger Indy
- ambrosus
- 블록 체인
- 하이퍼레저 패브릭
- 문제풀이
- 기초 of 기초 데이터 개념
- 코딩테스트
- Hyperledger Fabric
- Blockchain
- DOCs
- 빅데이터 교육
- 빅데이터
- 빅데이터 강의
- 블록체인
- Hyperledger Fabric v1.1
- 하이퍼레저 인디
- ubuntu
- 어서와 데이터는 처음이지
- 하이퍼레저 페브릭
- 알고리즘
- 코테
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함