Java 55(DayCalculate 프로그램)

Kang.__.Mingu·2024년 5월 14일
0

Java

목록 보기
57/108
post-custom-banner

DayCalculate

  • Scanner, SimpleDateFormat, Date, try~catch 응용

문제

  • 키보드로 생년월일을 입력받아 오늘까지 살아온 날짜(일)을 계산하여 출력하는 프로그램 작성

  • ex) 생년월일 입력[ex. 2000-01-01] >> 2024-05-12

  • ex) [결과]태어난지 <1일>이 지났습니다

  • 형식에 맞지 않는 생년월일을 입력한 경우 에러 메세지 출력 후 프로그램 종료


풀이 1(M)

public class DayCalculateApp {
    public static void main(String[] args) {
        // Scanner, SimpleDateFormat, Date, try~catch
        Scanner sc = new Scanner(System.in);
        Date currentDate = new Date();
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

        System.out.print("생년월일 입력[ex) 2000-01-01] >> ");
        String birthday = sc.nextLine();

        try {
            // String >> Date로
            // parse() 메소드는 ParseException 에러 발생할 수 있음
            Date birthdayDate = dateFormat.parse(birthday);
            // 생일, 현재 날짜 초로 변환
            long birthdayTime = birthdayDate.getTime();
            long currentTime = currentDate.getTime();
            System.out.println("[결과] 태어난지 <" + (currentTime - birthdayTime) 
            / (1000 * 86400) + "일>이 지났습니다.");
        } catch (ParseException e) {
            System.out.println("[에러] 형식에 맞지 않는 생년월일을 입력했습니다.");
            System.exit(0);
        }
        sc.close();
    }
}

풀이 2(T)

public class DayCalculateApp {
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		
		SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");
		
		Date birthday=null;
		
		System.out.print("생년월일 입력[ex. 2000-01-01] >> ");
		
		try {
			//키보드로 입력받은 생년월일(String 객체)을 Date 객체로 변환하여 저장
			// => 키보드로 입력받은 생년월일이 SimpleDateFormat 객체의 패턴정보와 일치하지 
			//않을 경우 ParseException 발생
			birthday=dateFormat.parse(scanner.nextLine());
		} catch (ParseException e) {
			System.out.println("[에러]생년월일을 형식에 맞게 입력해 주세요.");
			System.exit(0);
		} finally {
			scanner.close();
		}

		//살아온 날짜를 계산하여 출력
		long day=(System.currentTimeMillis()-birthday.getTime())/(1000*60*60*24);
		
		System.out.println("[결과]태어난지 <"+day+">일 지났습니다.");
	}
}
profile
최선을 다해 꾸준히 노력하는 개발자 망고입니당 :D
post-custom-banner

0개의 댓글