Skip to content

Instantly share code, notes, and snippets.

@YongWanJin
Last active July 8, 2023 09:47
Show Gist options
  • Save YongWanJin/c10feb9264a40058e8e29f55e236486d to your computer and use it in GitHub Desktop.
Save YongWanJin/c10feb9264a40058e8e29f55e236486d to your computer and use it in GitHub Desktop.
제로베이스 백엔드 1주차 미니과제 5번
/*
진용완
제로베이스 백엔드 스쿨 15기
*/
import java.time.*;
import java.util.InputMismatchException;
import java.util.Scanner;
class MyCalendar {
// [ 변수 ]
int year = LocalDate.now().getYear();
int month = LocalDate.now().getMonthValue();
MyCalendar(){}
// [ 메서드 ]
// # 입력값 받는 메서드
public void getInput(){
Scanner sc;
System.out.println("[달력 출력 프로그램]");
while(true) {
System.out.print("달력의 년도를 입력해 주세요.(yyyy):");
sc = new Scanner(System.in);
try{
year = sc.nextInt();
if (year>9999){ throw new ExceptionNotYear(); }
} catch (InputMismatchException | ExceptionNotYear e) { continue; }
break;
}
while(true) {
System.out.print("달력의 월을 입력해 주세요.(mm):");
sc = new Scanner(System.in);
try{
month = sc.nextInt();
if (month<=0 | month>=13){ throw new ExceptionNotMonth(); }
} catch (InputMismatchException | ExceptionNotMonth e) { continue; }
break;
}
}
// # 달력 출력하는 메서드
public void printCalendar(){
System.out.printf("\n\n[%d년 %02d월]\n", year, month);
System.out.println("일 월 화 수 목 금 토");
// 날짜 출력 위치 계산을 위한 지역 변수들
LocalDate current = LocalDate.of(year, month, 1);
String firstDay = current.getDayOfWeek().toString();
// * 지역 클래스
// : 첫째 날의 요일(firstDay)을 기준으로
// 날짜 시작 위치가 달라지도록 달력을 출력하는 메서드 포함
class DayPrint{
void dayPrint(int d){
for (int i = 1; i<=42; i++){
if (i>d & i<=current.lengthOfMonth()+d) {
System.out.printf("%02d ", i-d);
} else {
System.out.print(" ");
}
if (i%7==0){
System.out.println();
}
}
}
}
// 각각 상황에 맞는 달력 출력
DayPrint dp = new DayPrint();
switch (firstDay) {
case "SUNDAY" : dp.dayPrint(0); break;
case "MONDAY" : dp.dayPrint(1); break;
case "TUESDAY" : dp.dayPrint(2); break;
case "WEDNESDAY": dp.dayPrint(3); break;
case "THURSDAY" : dp.dayPrint(4); break;
case "FRIDAY" : dp.dayPrint(5); break;
case "SATURDAY" : dp.dayPrint(6); break;
}
}
}
// 메인부
public class Mini5Calendar {
public static void main(String[] args) {
MyCalendar myCalendar = new MyCalendar();
myCalendar.getInput();
myCalendar.printCalendar();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment