티스토리 뷰
import java.util.Scanner;
import java.util.Date; // 시스템의 시간
import java.util.StringTokenizer; // 구분 문자별로 문자열을 나눠주는 클래스
import java.text.SimpleDateFormat;// 날짜 형태를 마음대로 조절
public class testcoding {
private int year, month, total;
private int[] lastday={31,28,31,30,31,30,31,31,30,31,30,31};
// 생성자로 멤버변수 초기화
public testcoding()
{
//시스템시간 읽어옴 Date(),StringTokenizer(),SimpleDateFormat()
Date date = new Date(); // 시스템의 시간을 읽어옴
//원하는 날짜 형태로 변경(대문자 M = 월 소문자 m =분)
//M, d를 하나만 붙여주면 있는 그대로 가져옴 -> 1 일 경우 01 이 아닌 1로 가져옴
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-M-d");
//System.out.println(sdf.format(date));
//년도, 월, 일씩 자름 -> yyyy mm dd로 자름-> 기준점이 - 이기 때문에
StringTokenizer st=new StringTokenizer(sdf.format(date),"-");
String strYear=st.nextToken(); // yyyy
String strMonth=st.nextToken(); // MM
String strDay=st.nextToken(); // dd
//System.out.println("Year : "+strYear);
//System.out.println("Month : "+strMonth);
//System.out.println("Day : "+strDay);
// 문자열을 정수형으로 변경
year=Integer.parseInt(strYear);
month=Integer.parseInt(strMonth);
total=0;
}
// 입력
public void input()
{
Scanner scan = new Scanner(System.in);
System.out.print("년도 입력 : ");
year = scan.nextInt();
System.out.print("월 입력 : ");
month = scan.nextInt();
}
// 총 날짜수 계산
public void getTotal()
{
// 전년도까지의 총 날짜
total=(year-1)*365+(year-1)/4 -(year-1)/100+(year-1)/400;
if(isYear(year))
{
lastday[1]=29;
}
else
{
lastday[1]=28;
}
for(int i=0; i<month-1;i++)
total+=lastday[i];
total+=1;
}
// 윤년 계산
public boolean isYear(int year)
{
//변수명이 같을 경우 지역변수 우선순위(메소드 영역에서 선언된 변수, 매개 변수)
if((year)%4==0 && year%100!=0 || (year%400==0))
return true;
else
return false;
}
// 요일 계산
public int getWeek()
{
int week=total%7;
return week;
}
// 요일부터 달력 출력
public void output(int week)
{
char[] strWeek={'일','월','화','수','목','금','토'};
for(int i=0;i<strWeek.length;i++)
{
System.out.print(strWeek[i]+"\t");
}
System.out.println("\n");
for(int i=1; i<=lastday[month-1];i++)
{
if(i==1)
{
for(int j=0;j<week;j++)
{
System.out.print("\t");
}
}
System.out.printf("%2d\t",i);
week++;
if(week>6)
{
week=0;
System.out.println();
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
testcoding a=new testcoding();
a.input();
a.getTotal();
int week=a.getWeek();
a.output(week);
}
}
전에 올린 달력 출력 소스를 메소드화 시켜봤습니다.
주석은 달력출력 소스를 참고하시면 되겠습니다.
'Programming? > JAVA' 카테고리의 다른 글
운세보기 프로그램이라 쓰고 복불복 프로그램이라 읽는다 (0) | 2012.07.30 |
---|---|
쓰레드를 이용한 타임워치 (0) | 2012.07.30 |
숫자야구게임-메소드ver (0) | 2012.07.11 |
2차원 배열을 이용한 모래시게 (0) | 2012.07.07 |
2차원 배열을 이용한 다이아몬드 (0) | 2012.07.07 |
- Total
- Today
- Yesterday
- Talesweaver_Palshu
- League of legends
- DnF_카인
- PS VITA
- jdbc
- Unleashed
- jsp
- C Programming
- XML
- 포세리앙 시밤...
- spring
- PSP
- Android
- java
- 무사헌터G
- GOD EATER2
- oracle
- 이건사야되!
- HTML
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |