또 다른 풀이 공유합니다.
질문은 아니고, 수강하시는 분들에게 도움이 되고자 제가 풀이한 또 다른 방식 공유합니다.
package time.test;
import java.util.Scanner;
import java.time.LocalDate;
import java.time.DayOfWeek;
public class TestCalendarPrinter {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("년도를 입력하세요: ");
int year = sc.nextInt();
sc.nextLine();
System.out.print("월을 입력하세요: ");
int month = sc.nextInt();
sc.nextLine();
printCalendar(year, month);
}
private static void printCalendar(int year, int month) {
// 사용자 입력에 따른 LocalDate 객체 생성
LocalDate ld = LocalDate.of(year, month, 1);
// 요일 표지 출력
System.out.println("Su Mo Tu We Th Fr Sa");
for (int i = 0; i < ld.lengthOfMonth(); i++) {
// 해당 월의 1일에 해당하는 요일을 감지하고, 이에 따라 출력 시작 위치를 지정
// ld.getDayOfWeek().getValue()는 해당 날짜의 요일 값을 int로 리턴 Sunday(0), Monday(1)
if (i == 0) {
for (int j = 0; j < ld.getDayOfWeek().getValue(); j++) {
System.out.print(" ");
}
}
// 다음 일을 출력. startPosition은 위에서 맞췄으므로 단순 포맷팅 출력만 하면 됨
LocalDate currentLd = ld.plusDays(i);
System.out.printf("%2d ", currentLd.getDayOfMonth());
// Saturday 출력 후에는 다음 줄로 이동
if (currentLd.getDayOfWeek() == DayOfWeek.SATURDAY) {
System.out.println();
}
}
}
}
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
dev.rudevico님께서 공유해주신 또 다른 방식의 달력 출력 로직 잘 보았습니다. Java의 LocalDate와 DayOfWeek를 활용하여 사용자 입력에 따라 달력을 출력하시는 방식은 매우 유용한 접근입니다. 특히 요일 값에 맞춰 첫 번째 일자의 위치를 정렬하는 부분이 깔끔하게 구현되어 있습니다.
혹시 이와 관련하여 코드 개선이나 추가 설명을 원하는 분들에게, 관련된 유사한 질문이 아래와 같이 인프런 Q&A게시판에 있습니다. 여기에 다양한 코딩 팁들과 논의를 확인하실 수 있습니다:
- 섹션6. 문제와 풀이 : 포맷팅과 날짜 처리에 대한 질문과 답변이 포함되어 있습니다.
이 로직을 응용하여 다양한 날짜 기반의 기능을 구현하실 수 있을 것입니다. 다른 수강생 분들도 다양한 방법으로 문제를 접근할 수 있다는 점을 확인하시면 학습에 큰 도움이 될 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
문제와 풀이
0
23
1
섹션 2 퀴즈 9번
0
31
2
강의노트 내용이 이해가 되지 않아서 문의드립니다.
0
47
1
중급1편, 래퍼클래스 문제와풀이2 로또제너레이터 질문
0
67
1
setVlaue질문
0
92
3
안녕하세요 코딩테스트와 병행하고 싶어서 질문드립니다.
0
92
1
findValue의 파라메터까지 래퍼클래스 배열인 이유가 있을까요?
0
74
1
아래 글처럼 toString() 강의부터 화면이 안보여요
0
99
2
TemporalAdjusters의 lastDayOfNextMonth(), lastDayOfNextYear() 메서드 지원 안함
0
84
2
오타 제보도 되나요?
0
90
2
지역 클래스 예제3 지역변수 질문
0
69
2
래퍼클래스 박싱 출력
0
60
1
자바 equals() 메소드에 대한 물리적 동일성, 논리적 동등성 질문
0
105
3
강의록 오타 제보
0
69
2
자바의 기본 클래스들에 관하여
0
70
1
실무에서 중첩(내부) 클래스 사용하나요?
0
79
1
지역 클래스 - 지역 변수 캡처3
0
55
1
12:30 의 newClassGrade 질문이 있습니다.
0
57
1
날짜와 시간 문제풀이가 막히는데
0
100
2
내부 클래스의 바깥 클래스 참조
0
68
1
스트링 풀, new String()
0
105
3
정적 중첩 클래스 사용 이유
0
97
1
status.getCode() 대신 status.code 사용
1
81
1
메서드의 지역변수명과 내부클래스의 멤버메서드에서의 지역변수명의 중복관련
0
75
1





