728x90
반응형
DayOfCalendar
package com.cal01;
public class DayOfCalendar_A {
//윤년 계산 -> 해당 년도 해당 월의 일수 계산시 필요
public static boolean isLeapYear(int year) {
boolean leap = false;
if(year%4==0 && year%100!=0 ||year%400==0) {
return true;
}
return leap;
}
//일수 계산 -> 해당 년도 해당 월의 일수 리턴
public static int dates(int year, int month) {
int date=0;
switch(month) {
case 0:
break;
case 2:
if(year%4 ==0 && year%100!=0 || year%400==0) {
date+=29;
} else {
date+=28;
}
break;
case 4:
case 6:
case 9:
case 11:
date+=30;
break;
default:
date+=31;
break;
}
return date;
}
//요일 계산 -> 입력한 년도의 입력한 월의 1일의 요일 리턴
//0:일요일 ~ 6:토요일
public static int whatDay(int year, int month) {
int dayOfWeek = 0;
int sum =0;
//1년 1월 1일 ~ year-1년 12월 31일 까지 합
for(int i =1; i<year; i++) {
for(int j=1; j<=12; j++) {
sum += dates(i,j);
}
}
//year년 1월 1일 ~ year년 month-1월 마지막일 합
for(int k = 1; k<month; k++) {
sum += dates(year,k);
}
//year년 month월 1일
sum+=1;
//요일계산
dayOfWeek = sum % 7;
return dayOfWeek;
}
//달력 출력
public static void prn(int year, int month) {
//윗부분
System.out.printf("\t\t%d년 %d월\n", year, month);
System.out.println("일\t월\t화\t수\t목\t금\t토");
//시작요일
int start = whatDay(year, month);
//마지막 요일
int last = dates(year, month);
//시작요일만큼 빈 공간
for(int i = 0; i<start; i++) {
System.out.print("\t");
}
//출력
for(int i = 1; i<=last; i++){
System.out.printf("%d\t", i);
start++;
if(start%7 ==0) {
System.out.println();
}
}
}
}
Main
package com.cal01;
import java.util.Scanner;
public class MTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("연 월 입력:");
int year = sc.nextInt();
int month = sc.nextInt();
DayOfCalendar_A.prn(year, month);
}
}
결과
728x90
반응형
'Language > Java' 카테고리의 다른 글
[JAVA]제어문_조건문 (0) | 2020.10.22 |
---|---|
[JAVA]Calendar03_api사용하여 달력만들기 (0) | 2020.10.20 |
[JAVA]Calendar01_년,월,일구하기 (0) | 2020.10.20 |
[JAVA]SumX (0) | 2020.10.20 |
[JAVA]구구단 (0) | 2020.10.20 |