JAVA 프로그래밍

문제

시작 요일과 말일을 입력받아 달력을 출력하는 문제입니다 이를 해결하는 프로그램을 작성하세요 
일(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일부터 말일까지 출력
      일주일씩 한 줄에 출력(일요일은 새 줄에서 시작)
프로그램 종료

프로그램 구현

     
 
 ※ 단계별 점검: A키(이전), D키(다음) 
 
	// 파일명 : ./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		}
	}

실행 순서 확인