JAVA 프로그래밍

문제

시작요일과 말일을 입력받아 달력을 출력하는 문제입니다 이를 해결하는 프로그램의 다음 실행상태에 대해 빈칸을 채우세요 

프로그램의 실행순서 및 실행상태

1  public static void main( String[] args ) {  

2   int lastDay = scan.nextInt();
일(0),월(1),화(2),수(3),목(4),금(5),토(6) 중에서 
이번달 1일은 무슨요일인가요 : 5
이번달 말일은 언제인가요 : 4

3   System.out.println( "   일   월   화   수   목   금   토" ); 
   일   월   화   수   목   금   토

4   for( ; dayOfWeek < firstDay; dayOfWeek++ ) {
                         main()
scan  (Scanner) 
 firstDay  5 
  lastDay  4 
   SUNDAY  0 
 SATURDAY  6 
dayOfWeek  0 

5    System.out.print( "     " );
   일   월   화   수   목   금   토
_____

4   for( ; dayOfWeek < firstDay; dayOfWeek++ ) {
                         main()
scan  (Scanner) 
 firstDay  5 
  lastDay  4 
   SUNDAY  0 
 SATURDAY  6 
dayOfWeek

5    System.out.print( "     " );
   일   월   화   수   목   금   토
_____
                             
 ... 

5    System.out.print( "     " );
   일   월   화   수   목   금   토
_____

4   for( ; dayOfWeek < firstDay; dayOfWeek++ ) {

6   for ( int day = 1; day <= lastDay; day++, dayOfWeek++ ) {
                         main()
scan  (Scanner) 
 firstDay  5 
  lastDay  4 
   SUNDAY  0 
 SATURDAY  6 
dayOfWeek  5 
      day  1 

   일   월   화   수   목   금   토
1

7    if ( dayOfWeek == SATURDAY ) {

6   for ( int day = 1; day <= lastDay; day++, dayOfWeek++ ) {
                         main()
scan  (Scanner) 
 firstDay  5 
  lastDay  4 
   SUNDAY  0 
 SATURDAY  6 
dayOfWeek  6 
      day  2 

   일   월   화   수   목   금   토
1 2

7    if ( dayOfWeek == SATURDAY ) {

   일   월   화   수   목   금   토
1 2

8     dayOfWeek = SUNDAY - 1;

6   for ( int day = 1; day <= lastDay; day++, dayOfWeek++ ) {
                         main()
scan  (Scanner) 
 firstDay  5 
  lastDay  4 
   SUNDAY  0 
 SATURDAY  6 
dayOfWeek
      day

   일   월   화   수   목   금   토
1 2
3

7    if ( dayOfWeek == SATURDAY ) {

6   for ( int day = 1; day <= lastDay; day++, dayOfWeek++ ) {
                         main()
scan  (Scanner) 
 firstDay  5 
  lastDay  4 
   SUNDAY  0 
 SATURDAY  6 
dayOfWeek
      day

   일   월   화   수   목   금   토
1 2
3 4

7    if ( dayOfWeek == SATURDAY ) {

6   for ( int day = 1; day <= lastDay; day++, dayOfWeek++ ) {
                         main()
scan  (Scanner) 
 firstDay  5 
  lastDay  4 
   SUNDAY  0 
 SATURDAY  6 
dayOfWeek
      day

9  }


프로그램 코드

	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( "   일   월   화   수   목   금   토" );	
		
			final int SUNDAY = 0, SATURDAY = 6;		
			int dayOfWeek = SUNDAY;
4			for( ; dayOfWeek < firstDay; dayOfWeek++ ) {
5				System.out.print( "     " );
			}
			
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		}
	}