문제
시작 요일과 말일을 입력받아 달력을 출력하는 문제입니다 이를 해결하는 프로그램을 작성하세요
일(0), 월(1), 화(2), 수(3), 목(4), 금(5), 토(6) 중에서
이번 달 1일은 무슨 요일인가요 : 5
이번 달 말일은 언제인가요 : 4
일 월 화 수 목 금 토
1 2
3 4
일(0), 월(1), 화(2), 수(3), 목(4), 금(5), 토(6) 중에서
이번 달 1일은 무슨 요일인가요 : 4
이번 달 말일은 언제인가요 : 31
일 월 화 수 목 금 토
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
일(0), 월(1), 화(2), 수(3), 목(4), 금(5), 토(6) 중에서
이번 달 1일은 무슨 요일인가요 : 1
이번 달 말일은 언제인가요 : 30
일 월 화 수 목 금 토
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
알고리즘 설계
프로그램 시작
시작 요일 및 말일을 입력받기
1일 이전은 공백 출력
1일부터 말일까지 출력
일주일씩 한 줄에 출력(일요일은 새 줄에서 시작)
프로그램 종료
// 파일명 : ./Chapter09/Calendar.java
import java.util.Scanner;
public class Calendar
{
// 프로그램 시작
1 public static void main( String[] args ) {
Scanner scan = new Scanner( System.in );
// 시작 요일 및 말일을 입력받기
System.out.print( "일(0), 월(1), 화(2), 수(3), 목(4), 금(5), 토(6) 중에서 \n이번 달 1일은 무슨 요일인가요 : " );
int firstDay = scan.nextInt();
System.out.print( "이번 달 말일은 언제인가요 : " );
2 int lastDay = scan.nextInt();
// 요일 출력
3 System.out.println( " 일 월 화 수 목 금 토" );
// 1일 이전은 공백 출력
final int SUNDAY = 0, SATURDAY = 6;
int dayOfWeek = SUNDAY;
4 for( ; dayOfWeek < firstDay; dayOfWeek++ ) {
5 System.out.print( " " );
}
// 1일부터 말일까지 출력
6 for ( int day = 1; day <= lastDay; day++, dayOfWeek++ ) {
System.out.printf( "%5d", day );
// 일주일씩 한 줄에 출력(일요일은 새 줄에서 시작)
7 if ( dayOfWeek == SATURDAY ) {
System.out.println();
8 dayOfWeek = SUNDAY - 1;
}
}
scan.close();
// 프로그램 종료
9 }
}
실행 순서 확인