티스토리 뷰
※[JAVA] 해당날짜의 요일구하기
○ 실습 문제
아래의 클래스(WeekDay)를 완성한다.
사용자로부터 년, 월, 일을 입력받아 해당 날짜의 요일을 출력하는 프로그램을 구현한다. 단, 달력 클래스(Calender)는 사용하지 않는다. 또한, 클래스의 개념을 활용하여 작성할 수 있도록 한다. 그리고, 배열의 개념도 적용시켜 작성할 수 있도록 한다.
import java.util.Scanner;
class WeekDay
{
// 주요 변수 선언(속성 구성)
private int y, m, d;
//-- 사용자가 입력한 년, 월, 일을 담을 변수
// 메소드 정의(입력받기)
void input()
{
Scanner sc = new Scanner(System.in);
System.out.print("년 월 일 입력(공백구분) : ");
y = sc.nextInt();
m = sc.nextInt();
d = sc.nextInt();
}
//메소드 정의(요일 산출하기)
String week()
{
// 각 월의 마지막 날짜(각 월의 최대값)을 배열 형태로 구성
int[] months ={31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
// 요일명에 대한 배열 구성
String[] weekNames = {"일","월","화","수","목","금","토"};
// 날수를 종합할 변수, 루프 변수, 요일 변수
int nalsu, i, w;
// 윤년에 따른 2월의 날 수 계산
// 윤년이라면... 2월의 마지막 날짜를 29일로 설정 -> months[1] = 29
// 평년이라면... 2월의 마지막 날짜를 28일로 설정 -> months[1] = 28
if(y%4==0&&y%100!=0||y%400==0)// 입력 년도가 윤년이라면...
{
// 2월의 마지막 날짜를 29일로 설정
months[1] = 29;
}
else
{
months[1] = 28;
}
// ① 1년 1월 1일 부터 입력받은 년도의 이전 년도 12월 31일까지의 날 수 계산
nalsu = (y-1)*365 + (y-1)/4 - (y-1)/100 + (y-1)/400;
// ② 입력받은 월의 이전 월 까지의 날 수 계산 후
// 1번 결과에 더하는 연산
for(i=0;i<(m-1);i++)
nalsu += months[i];
// ③ 입력받은 일의 날짜만큼 날 수 계산 후
// 2번 결과에 더하는 연산
nalsu +=d;
//-------------------------------------------여기까지 날 수 연산 끝~!!!
// 무슨 요일인지 확인하기 위한 연산
w = nalsu%7; // 전체날수 %7 == 0 ->일요일
// 전체날수 %7 == 1 ->월요일
// 전체날수 %7 == 2 ->화요일
return weekNames[w];
}
void print(String day)
{
System.out.printf("\n>> %d년 %d월 %d일 -> %s\n",y,m,d,day);
}
}
public class Test091_1
{
public static void main(String[] args)
{
WeekDay wd = new WeekDay();
wd.input(); //-- 입력 메소드 호출
String result = wd.week(); //-- 요일 산출 메소드 호출
wd.print(result);
}
}
※실행결과
년 월 일 입력(공백구분) : 2019 3 9
>> 2019년 3월 9일 -> 토
계속하려면 아무 키나 누르십시오 . . .
'국비지원Study > Java' 카테고리의 다른 글
[JAVA] 만년달력 (0) | 2019.03.09 |
---|---|
[JAVA] 가위바위보 게임 (0) | 2019.03.09 |
[JAVA] 별찍기(피라미드,역파리미드,다이아몬드) (0) | 2019.03.09 |
[JAVA] 소수판별하기 (0) | 2019.03.09 |
[JAVA] 알파벳 대소문자 변환 (0) | 2019.03.09 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- C
- 블로그관리
- 무료강의
- 책리뷰
- Tistory
- 자바
- It
- 노마드코더
- 알고리즘
- 초보개발자
- Nomad Coders
- highlight.js
- 전문대
- Velopert
- Git
- 국비지원
- 설치방법
- Java
- 개발자
- 반복문
- 배열
- Python
- 인스타그램 클론
- 전공
- 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 |
글 보관함