Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java로 윤년(Leap Year) 확인하는 프로그램 작성법

이 글에서는 Java를 사용하여 주어진 연도가 윤년(leap year)인지 확인하는 방법을 알아봅니다. 핵심 원리는 해당 연도가 4와 100으로 나누어 떨어지는지 검사하는 것입니다.

윤년이란 무엇일까요?

윤년은 달력의 연도와 실제 천문학적 연도(지구가 태양을 한 바퀴 도는 주기)의 차이를 보정하기 위해 하루를 추가로 더한 해입니다. 일반적으로 4로 나누어 떨어지는 연도가 윤년이지만, 여기에는 예외 규칙이 있습니다.

  • 4로 나누어 떨어지면 윤년입니다.
  • 단, 100으로 나누어 떨어지는 연도는 윤년이 아닙니다.
  • 하지만 400으로 나누어 떨어지는 연도는 다시 윤년입니다.

예를 들어 2000년은 400으로 나누어 떨어지므로 윤년이고, 1900년은 100으로 나누어 떨어지지만 400으로 나누어 떨어지지 않으므로 윤년이 아닙니다.

입력 및 출력 예시

입력

Enter a year: 2000

출력

2000 is a Leap year

알고리즘

프로그램의 동작 흐름은 다음과 같습니다.

Step 1 - 시작
Step 2 - 정수형 변수 my_input과 불리언 변수 isLeap 선언
Step 3 - 사용자로부터 값을 입력받거나 값 직접 정의
Step 4 - if-else 조건문으로 해당 연도가 4, 100, 400으로 나누어 떨어지는지 확인
Step 5 - 결과 출력
Step 6 - 종료

예제 1: 사용자 입력값으로 확인하기

다음 예제에서는 Scanner를 사용해 사용자가 직접 연도를 입력하면, 프로그램이 해당 연도가 윤년인지 판별하여 콘솔에 출력합니다.

import java.util.Scanner;
public class LeapYear {
   public static void main(String[] args) {
      int my_input;
      boolean isLeap = false;
      System.out.println("필요한 패키지가 임포트되었습니다");
      Scanner my_scanner = new Scanner(System.in);
      System.out.println("Scanner 객체가 생성되었습니다");
      System.out.print("연도를 입력하세요 : ");
      my_input = my_scanner.nextInt();
      if (my_input % 4 == 0) {
         if (my_input % 100 == 0) {
            if (my_input % 400 == 0)
               isLeap = true;
            else
               isLeap = false;
         }
         else
            isLeap = true;
      }
      else
         isLeap = false;
      if (isLeap)
         System.out.println(my_input + "은(는) 윤년입니다");
      else
         System.out.println(my_input + "은(는) 윤년이 아닙니다");
   }
}

출력 결과

필요한 패키지가 임포트되었습니다
Scanner 객체가 생성되었습니다
연도를 입력하세요 : 2000
2000은(는) 윤년입니다

예제 2: 미리 정의된 값으로 확인하기

이번 예제에서는 연도 값이 코드 안에 미리 정의되어 있으며, 그 값을 읽어와 콘솔에 출력합니다. 사용자 입력 없이 로직만 빠르게 테스트할 때 유용한 방식입니다.

public class LeapYear {
    public static void main(String[] args) {
        int my_input = 2000;
        boolean isLeap = false;
        System.out.println("정의된 연도는 " + my_input + "입니다");
        if (my_input % 4 == 0) {
            if (my_input % 100 == 0) {
                if (my_input % 400 == 0)
                    isLeap = true;
                else
                    isLeap = false;
            }
            else
                isLeap = true;
        }
        else
            isLeap = false;
        if (isLeap)
            System.out.println(my_input + "은(는) 윤년입니다");
        else
            System.out.println(my_input + "은(는) 윤년이 아닙니다");
    }
}

출력 결과

정의된 연도는 2000입니다
2000은(는) 윤년입니다

마무리

윤년 판별 로직은 중첩된 if-else 조건문만으로 간단하게 구현할 수 있습니다. 나머지 연산자(%)를 활용해 4, 100, 400으로 나누어 떨어지는지 순서대로 검사하면 되며, 이 원리는 Java뿐 아니라 다른 프로그래밍 언어에서도 동일하게 적용됩니다. 초보자에게 좋은 조건문 연습 예제이니 위 코드를 직접 실행해 다양한 연도로 테스트해 보시기 바랍니다.