* [실습]
*
* 생년월일을 입력하고 만 나이를 출력하는 프로그램을 작성하시오.
* 만 나이 = (현재 연도 - 태어난 연도) - (생일 지났으면 0, 생일 지나지 않았으면 1)
*
* [입력 예시]
* 출생연도 입력: 2000
* 월 입력: 3
* 일 입력: 12
*
* [출력 예시]
* 만 나이는 23
*
package kr.s05.operation;
public class Ifmain09 {
public static void main(String[] args) {
//현재 날짜 정보
int thisYear = 2023;
int thisMonth = 9;
int thisDate = 4;
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.print("출생연도 입력: ");
int year = input.nextInt();
System.out.print("월 입력: ");
int month = input.nextInt();
System.out.print("일 입력: ");
int date = input.nextInt();
int result = thisYear - year;
if(thisMonth < month) {
result--;
}else if(thisMonth == month && thisDate < date) {
result--;
}else {
System.out.println("~~~~~~~~~~~");
}
System.out.printf("만 나이는 %d%n", result);
input.close();
}
}
만 나이 = (현재 연도 - 태어난 연도) - (생일 지났으면 0, 생일 지나지 않았으면문제와 함께 제공된 만 나이를 구하는 공식에 따라 경우의 수가 다음과 같이 나뉜다.
① 생일이 지났음 : (현재 연도 - 태어난 연도)
② 아직 생일인 달이 오지 않았음 : (현재 연도 - 태어난 연도) - 1
③ 생일인 달이나, 생일인 날이 오지 않았음 : (현재 연도 - 태어난 연도) - 1
위 경우에 따라 if문으로 조건에 맞는 방법을 나누어 코드를 작성하는 것이 위 예제의 핵심이다.
현재 날짜 정보(제공될 정보)를 각 변수에 입력한다.
ex. int thisYear = 2023;
Scanner를 이용해 출생연도와 월, 일을 입력 받는다.
만 나이를 구하는 방법의 공통 부분인 (현재 연도 - 태어난 연도)에 해당하는 코드를 int result = thisYear - year; 작성하여 연산을 한다.
if문에서 생일인 달이 오지 않은 경우, 현재 월과 태어난 월을 비교하여 현재 월보다 태어난 월이 크다면 result--하여 후에 출력 시 -1이 된 값이 출력되도록 한다.
ex. thisMonth = 9, month = 10
if(thisMonth < month) {
result--;
result--하여 후에 출력 시 -1이 된 값이 출력되도록 한다.else if(thisMonth == month && thisDate < date) {
result--;
마지막으로 생일이 지난 경우, 날짜의 변동이 없으므로 따로 코드를 작성해줄 필요 없이 else로 넘긴다.
(System.out.println("~~~~~~~~~~~");는 제대로 처리되었는지 확인하기 위해 추가)
코드가 끝나면 input.close(); 해준다.