[Java] tip: 만 나이 구하는 프로그램 만들기 (Scanner, 다중 if문)

febCho·2023년 10월 6일
0

Java

목록 보기
16/53

만 나이 프로그램 만들기 - 문제

		 * [실습]
		 * 
		 * 생년월일을 입력하고 만 나이를 출력하는 프로그램을 작성하시오.
		 * 만 나이 = (현재 연도 - 태어난 연도) - (생일 지났으면 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문으로 조건에 맞는 방법을 나누어 코드를 작성하는 것이 위 예제의 핵심이다.

  1. 현재 날짜 정보(제공될 정보)를 각 변수에 입력한다.
    ex. int thisYear = 2023;

  2. Scanner를 이용해 출생연도와 월, 일을 입력 받는다.

  3. 만 나이를 구하는 방법의 공통 부분인 (현재 연도 - 태어난 연도)에 해당하는 코드를 int result = thisYear - year; 작성하여 연산을 한다.

  4. if문에서 생일인 달이 오지 않은 경우, 현재 월과 태어난 월을 비교하여 현재 월보다 태어난 월이 크다면 result--하여 후에 출력 시 -1이 된 값이 출력되도록 한다.
    ex. thisMonth = 9, month = 10

if(thisMonth < month) {
			result--;
  1. 다음으로 if문에서 생일인 달이나, 생일인 날이 오지 않은 경우, 현재 월과 태어난 월이 같고 현재 일보다 태어난 일이 크다는 것을 논리곱으로 연결한 뒤 result--하여 후에 출력 시 -1이 된 값이 출력되도록 한다.
    ex. thisDate = 4, date = 8
else if(thisMonth == month && thisDate < date) {
			result--;

참고) 4. 논리연산자(&&, ||, !)

  1. 마지막으로 생일이 지난 경우, 날짜의 변동이 없으므로 따로 코드를 작성해줄 필요 없이 else로 넘긴다.
    (System.out.println("~~~~~~~~~~~");는 제대로 처리되었는지 확인하기 위해 추가)

  2. 코드가 끝나면 input.close(); 해준다.

profile
Done is better than perfect.

0개의 댓글