지금까지 배운 문법으로 코드를 짜보자.요일을 구하는 공식은 hint에서 알려주고 있다.
먼저 이 문제를 푸는 방식은 아주 다양하다는 것을 기억하자.
어떠한 코드라도 로직이 맞다면 요일을 구할 수 있다. 이 코드는 그 중 하나일 뿐이다.
package ex06;
public class weekday {
public static void main(String[] args) {
int year = 2022;
int month = 12;
int day = 28;
int totalDays; // 1900.1.1~내가 원하는 날짜가지의 총 일수
totalDays = (year - 1900) * 365; //2021년까지의 일수(윤달미포함)
totalDays = totalDays + (year-1900)/4;
//2021년까지의 일수
totalDays = (year - 1900) * 365;
totalDays = totalDays + (year-1900)/4;
int totalDays;
totalDays = (year - 1900) * 365; //2021년까지의 일수(윤달미포함)
totalDays = totalDays + (year-1900)/4; //2021년까지의 일수
if((year-1900)%4==0 && (month <3)) { // 윤년에 해당하고 1월이나 2월이라면
totalDays = totalDays - 1;
}
// 매월 마지막 날 : 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
if(month==1) {
totalDays = totalDays + day;
}
if(month==2) {
totalDays = totalDays + day+ 31; // 2월이므로 1월달 일자(31일)과 day를 더해준다.
}
if(month==3) {
totalDays = totalDays + day + 31+28;
}
if(month==4) {
totalDays = totalDays + day + 31 + 28 + 31;
}
if(month==5) {
totalDays = totalDays + day + 31 + 28 + 31 + 30;
}
if(month==6) {
totalDays = totalDays + day + 31 + 28 + 31 + 30 + 31;
}
if(month==7) {
totalDays = totalDays + day + 31 + 28 + 31 + 30 + 31 + 30;
}
if(month==8) {
totalDays = totalDays + day + 31 + 28 + 31 + 30 + 31 + 30 + 31;
}
if(month==9) {
totalDays = totalDays + day + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31;
}
if(month==10) {
totalDays = totalDays + day + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30;
}
if(month==11) {
totalDays = totalDays + day + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31;
}
if(month==12) {
totalDays = totalDays + day + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30;
}
int dow = totalDays%7;
package ex06;
public class weekday {
public static void main(String[] args) {
int year = 2022;
int month = 12;
int day = 28;
//(1) 1900.1.1~내가 원하는 날짜가지의 총 일수
// 1년 365, 윤달이 있는 1년은 366일
//(2) 일수 % 7 = 0(일요일), 1(월), 2(화), 3(수), 4(목), 5(금) 6,(토)
int totalDays;
totalDays = (year - 1900) * 365; //2021년까지의 일수(윤달미포함)
totalDays = totalDays + (year-1900)/4; //2021년까지의 일수
if((year-1900)%4==0&&(month <3)) {
totalDays = totalDays - 1;
}
//윤년인데 입력된 month가 1,2월이라면 29일인 윤년이 더해지지 않았을 것이므로 1을 뺀다.
// 매월 마지막 날 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
if(month==1) {
totalDays = totalDays + day;
}
if(month==2) {
totalDays = totalDays + day+ 31;
}
if(month==3) {
totalDays = totalDays + day + 31+28;
}
if(month==4) {
totalDays = totalDays + day + 31 + 28 + 31;
}
if(month==5) {
totalDays = totalDays + day + 31 + 28 + 31 + 30;
}
if(month==6) {
totalDays = totalDays + day + 31 + 28 + 31 + 30 + 31;
}
if(month==7) {
totalDays = totalDays + day + 31 + 28 + 31 + 30 + 31 + 30;
}
if(month==8) {
totalDays = totalDays + day + 31 + 28 + 31 + 30 + 31 + 30 + 31;
}
if(month==9) {
totalDays = totalDays + day + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31;
}
if(month==10) {
totalDays = totalDays + day + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30;
}
if(month==11) {
totalDays = totalDays + day + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31;
}
if(month==12) {
totalDays = totalDays + day + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30;
}
int dow = totalDays%7;
if(dow==0) {
System.out.println(year+"년"+month+"월"+day+"일요일입니다");
}
if(dow==1) {
System.out.println(year+"년"+month+"월"+day+"월요일입니다");
}
if(dow==2) {
System.out.println(year+"년"+month+"월"+day+"화요일입니다");
}
if(dow==3) {
System.out.println(year+"년"+month+"월"+day+"수요일입니다");
}
if(dow==4) {
System.out.println(year+"년"+month+"월"+day+"목요일입니다");
}
if(dow==5) {
System.out.println(year+"년"+month+"월"+day+"금요일입니다");
}
if(dow==6) {
System.out.println(year+"년"+month+"월"+day+"토요일입니다");
}
}
}
결과값 : 2022년12월28수요일입니다
year, month, day의 값을 바꾸어 다른 날도 올바른 요일이 나오는지 확인하자. (꼭 해 봐야 오류가 있는지 없는지 알 수 있다!)