728x90
package chap02;
import java.util.Scanner;
// 그 해 경과일 수를 구함
public class DayOfYearQ9 {
// 각 달의 일수
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년 d일의 그 해 경과 일 수를 구함
static int dayOfYear(int y, int m, int d) {
int days = d; // 일 수
for(int i = 1 ; i < m ; i++) { // 1월 ~ (m-1)월의 일 수를 더함
days += mdays[isLeap(y)][i-1];
}
return days;
}
// 그 해 남은 일 수 구하는 메서드 구현
static int leftDayOfYear(int y, int m, int d) {
int ldays = d;
for(int i = 1 ; i < m ; i++) { // 1월 ~ (m-1)월의 일 수를 더함
ldays += mdays[isLeap(y)][i-1];
}
return (365- ldays);
}
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
int retry;
System.out.println("그 해 경과 일 수를 구합니다.");
do {
System.out.print("년 : "); int year = stdIn.nextInt(); // 년
System.out.print("월 : "); int month = stdIn.nextInt(); // 월
System.out.print("일 : "); int day = stdIn.nextInt(); // 일
System.out.printf("그 해 %d일 째입니다 .\n", dayOfYear(year, month, day));
System.out.printf("그 해 남은 일 수는 %d일 입니다 .\n", leftDayOfYear(year, month, day));
System.out.print("한번 더 할까요? (1.예/0.아니오) : ");
retry = stdIn.nextInt();
} while (retry == 1);
}
}
'IT > 알고리즘 공부(JAVA)' 카테고리의 다른 글
배열 b의 모든 요소를 배열 a에 역순으로 복사하는 메서드 rcopy 작성 (0) | 2020.12.22 |
---|---|
배열 b의 모든 요소를 배열 a에 복사하는 메서드 copy를 작성 (0) | 2020.12.22 |
배열 a의 모든 요소의 합계를 구하여 반환하는 메서드를 작성 (0) | 2020.12.16 |
배열 요소를 역순으로 정렬하는 과정을 하나하나 나타내는 프로그램 작성 (0) | 2020.12.15 |
사람 수와 키를 랜덤으로 받아 최대 키값을 구하라 (0) | 2020.12.15 |