오랜만에 찾아뵙는 블로거 워누입니다.
오늘 포스팅은 심심해서 만들어본 자바 달력 프로그램입니다.
생각나는 대로 만들어본거라 조금은 어설플 수 있지만 도움이 될 것 같으신 분들은 참고하셔도 좋을 것 같네요! ㅎㅎ
[코드 참조]
package standard;
import java.util.Scanner;
public class Calendar {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
/*
* monthSet은 각 달에 대한 날짜들을 저장한 배열,
* year은 연도, month는 달, week는 요일, day는 일, i는 반복문을 사용하기 위한 변수.
*/
int year=0, month=0, week=0, day=0, i=0;
int monthSet[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
while(true) {
System.out.println("원하는 연도를 입력하세요. (0을 누르면 프로그램을 종료합니다.)");
year = sc.nextInt();
if(year==0) {
System.exit(0);
break;
}
System.out.println("원하는 달을 입력하세요.");
month = sc.nextInt();
if(month<1 || month>12) {
System.out.println("1월에서 12월 사이의 달을 입력해주세요.");
return;
}
System.out.println("");
if(year%4 == 0 && year%100 != 0 || year%400 == 0) // 윤년의 조건.
monthSet[1] = 29; // 윤년이면 2월 (monthSet[1])은 29일,
else
monthSet[1] = 28; // 윤년이 아니면 2월은 28일이다.
// 01년 1월 1일부터 계산.
day = (year-1)*365 + (year-1)/4 - (year-1)/100 + (year-1)/400;
for(i=0;i<month-1;i++) {
day += monthSet[i];
}
week=day%7; // 구하고자 하는 달의 시작일(1일)의 요일을 구함.
System.out.printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t\n", "월", "화", "수", "목", "금", "토", "일");
for(i=0;i<week;i++) {
System.out.print("\t"); // 1일이 시작하기 전 공백을 위한 반복문.
}
for(i=1;i<=monthSet[month-1];i++) {
System.out.printf("%d\t", i); // i를 입력한 달의 일수만큼 찍음.
week++;
if(week%7 == 0) // 요일이 일요일이 지나면
System.out.println(); // 줄을 바꿈.
}
if(week%7 != 0) {
System.out.println();
}
}
}
}
코드는 생각보다는 간단하더라구요.
윤년을 반영하는 부분이 초보자분들에게는 어려울 것 같습니다.ㅎㅎ 아래는 결과화면인데요, 코드를 작성한 날짜와, 가장 최근 윤달이었던 달, 그리고 제가 태어난 생년월일을 맞추어보았습니다. 0을 누르면 종료하게 되어 있습니다!
.
[결과 화면]
.
혹시 과제 때 필요해서 들어오신 분들이라면 참고하셔도 좋습니다만, Ctrl+C,V 가 아니라 직접 코딩해보는 것을 추천합니다! 그래야 실력이 늘겠죠?
.
시간이 늦었으니 저는 이만 자러갈게요~ 안녕!
'Java 공부하기' 카테고리의 다른 글
[JAVA] 간단한 로또 프로그램 만들기 (0) | 2020.09.02 |
---|---|
[JAVA] JAVA에서 향상된 For문 쓰기! (2) | 2020.08.30 |
자바 ComboBox와 ImageIcon으로 이미지를 가지고 놀아보아요! (0) | 2017.11.13 |
자바 GUI로 간단한 계산기 구현해보아요. (0) | 2017.11.06 |
[JAVA] 숫자로 구성된 배열 가지고 놀기!(삽입, 수정, 삭제 ,정렬) (0) | 2017.10.31 |