문제
생일과 오늘을 입력하면 태어난지 몇 일째인지 출력하는 알고리즘입니다 이를 해결하는 프로그램의 다음 실행상태에 대해 빈칸을 채우세요
프로그램의 실행순서 및 실행상태
1 public static void main( String[] args ) {
2 int thisDay = scan.nextInt();
생년을 입력하세요: 1397
생월을 입력하세요: 5
생일을 입력하세요: 15
올해를 입력하세요: 1450
이번 달을 입력하세요: 3
오늘 날짜를 입력하세요: 30
3 int birthTotalDays = ( birthYear - 1 ) * 365 + ( birthYear - 1 ) / 4 - ( birthYear - 1 ) / 100 + ( birthYear - 1 ) / 400;
4 switch ( birthMonth - 1 ) {
5 case 12:
7 case 11:
9 case 10:
11 case 9:
13 case 8:
15 case 7:
17 case 6:
19 case 5:
21 case 4:
22 birthTotalDays += 30;
24 birthTotalDays += 31;
26 birthTotalDays += 28;
27 if ( ( ( birthYear % 400 ) == 0 ) || ( ( ( birthYear % 100 ) != 0 ) && ( ( birthYear % 4 ) == 0 ) ) ) {
30 birthTotalDays += 31;
31 birthTotalDays += birthDay;
32 int thisTotalDays = ( thisYear - 1 ) * 365 + ( thisYear - 1 ) / 4 - ( thisYear - 1 ) / 100 + ( thisYear - 1 ) / 400;
33 switch ( thisMonth - 1 ) {
34 case 12:
36 case 11:
38 case 10:
40 case 9:
42 case 8:
44 case 7:
46 case 6:
48 case 5:
50 case 4:
52 case 3:
54 case 2:
55 thisTotalDays += 28;
56 if ( ( ( thisYear % 400 ) == 0 ) || ( ( ( thisYear % 100 ) != 0 ) && ( ( thisYear % 4 ) == 0 ) ) ) {
59 thisTotalDays += 31;
60 thisTotalDays += thisDay;
61 int duration = thisTotalDays - birthTotalDays + 1;
62 System.out.print( birthYear + "년 " + birthMonth + "월 " + birthDay + "일부터 " + thisYear + "년 " + thisMonth + "월 " + thisDay + "일까지 " + duration + "일째 잘 견디고 잘 살아내셨어요 당신을 응원합니다" );
1397년 5월 15일부터 1450년 3월 30일까지 19312일째 잘 견디고 잘 살아내셨어요 당신을 응원합니다
63 }
프로그램 코드
import java.util.Scanner;
public class LivingPeriod
{
1 public static void main( String[] args ) {
Scanner scan = new Scanner( System.in );
System.out.print( "생년을 입력하세요: " );
int birthYear = scan.nextInt();
System.out.print( "생월을 입력하세요: " );
int birthMonth = scan.nextInt();
System.out.print( "생일을 입력하세요: " );
int birthDay = scan.nextInt();
System.out.print( "올해를 입력하세요: " );
int thisYear = scan.nextInt();
System.out.print( "이번 달을 입력하세요: " );
int thisMonth = scan.nextInt();
System.out.print( "오늘 날짜를 입력하세요: " );
2 int thisDay = scan.nextInt();
3 int birthTotalDays = ( birthYear - 1 ) * 365 + ( birthYear - 1 ) / 4 - ( birthYear - 1 ) / 100 + ( birthYear - 1 ) / 400;
4 switch ( birthMonth - 1 ) {
5 case 12:
6 birthTotalDays += 31;
7 case 11:
8 birthTotalDays += 30;
9 case 10:
10 birthTotalDays += 31;
11 case 9:
12 birthTotalDays += 30;
13 case 8:
14 birthTotalDays += 31;
15 case 7:
16 birthTotalDays += 31;
17 case 6:
18 birthTotalDays += 30;
19 case 5:
20 birthTotalDays += 31;
21 case 4:
22 birthTotalDays += 30;
23 case 3:
24 birthTotalDays += 31;
25 case 2:
26 birthTotalDays += 28;
27 if ( ( ( birthYear % 400 ) == 0 ) || ( ( ( birthYear % 100 ) != 0 ) && ( ( birthYear % 4 ) == 0 ) ) ) {
28 birthTotalDays++;
}
29 case 1:
30 birthTotalDays += 31;
}
31 birthTotalDays += birthDay;
32 int thisTotalDays = ( thisYear - 1 ) * 365 + ( thisYear - 1 ) / 4 - ( thisYear - 1 ) / 100 + ( thisYear - 1 ) / 400;
33 switch ( thisMonth - 1 ) {
34 case 12:
35 thisTotalDays += 31;
36 case 11:
37 thisTotalDays += 30;
38 case 10:
39 thisTotalDays += 31;
40 case 9:
41 thisTotalDays += 30;
42 case 8:
43 thisTotalDays += 31;
44 case 7:
45 thisTotalDays += 31;
46 case 6:
47 thisTotalDays += 30;
48 case 5:
49 thisTotalDays += 31;
50 case 4:
51 thisTotalDays += 30;
52 case 3:
53 thisTotalDays += 31;
54 case 2:
55 thisTotalDays += 28;
56 if ( ( ( thisYear % 400 ) == 0 ) || ( ( ( thisYear % 100 ) != 0 ) && ( ( thisYear % 4 ) == 0 ) ) ) {
57 thisTotalDays++;
}
58 case 1:
59 thisTotalDays += 31;
}
60 thisTotalDays += thisDay;
61 int duration = thisTotalDays - birthTotalDays + 1;
62 System.out.print( birthYear + "년 " + birthMonth + "월 " + birthDay + "일부터 " + thisYear + "년 " + thisMonth + "월 " + thisDay + "일까지 " + duration + "일째 잘 견디고 잘 살아내셨어요 당신을 응원합니다" );
scan.close();
63 }
}