자료구조

한 해의 경과일수 구하기 [java]

땅콩콩 2022. 7. 14. 23:40

자바의 2차원 배열을 이용하여 한 해의 경과일수를 구하는 코드이다.

평년과 윤년을 2차원배열에 담아 사용했다.

import java.util.*;

public class Main {

    static int[][] mdays = {
        {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, //평년의 일수
        {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},  //윤년의 일수
    };

    //year년은 윤년인가 평년인가? (윤년이면 1, 평년이면 0)
    static int isLeap(int year){
        return (year%4==0 && year%100!=0 || year%400==0) ? 1 : 0;
    }

    //y년 m월 d일의 그 해 경과 일 수를 구한다.
    static int dayOfYear(int y, int m, int d){
        int days = d;
        for (int i = 1; i < m; i++) {
            days += mdays[isLeap(y)][i-1];
        }
        return days;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int retry; //다시할지 여부결정

        do{
            System.out.print("년: ");
            int year = scanner.nextInt();
            System.out.print("월: ");
            int month = scanner.nextInt();
            System.out.print("일: ");
            int day = scanner.nextInt();

            System.out.println("그 해 "+dayOfYear(year, month, day)+"일째입니다.");
            System.out.print("한번더? (1.예, 2.아니오)");
            retry = scanner.nextInt();
        }while (retry==1);
    }
}

'자료구조' 카테고리의 다른 글

스택(Stack)  (0) 2022.07.16
배열검색 (이진검색)  (0) 2022.07.15
배열 검색 (선형검색, 보초법)  (0) 2022.07.15
소수의 나열 [java]  (0) 2022.07.14
10진수 > 2진수~36진수 기수변환 [java]  (0) 2022.07.14