Problem Solving

[Java] Requirements Q099: Time Class Design (생성자 오버로딩)

Isaac S. Lee 2023. 8. 8. 09:51

📌Q099 Class

package com.test.question.q99;

public class Q099 {

	public static void main(String[] args) {
		/*
		● 요구사항
		시간 클래스를 구현하시오.
		
		● 조건
		- 생성자 오버로딩을 구현하시오.
		- 2자리 출력
		- Time
			시간 클래스
			상태
				hour: 시(0 이상 양의 정수)
				minute: 분(0 이상 양의 정수)
				second: 초(0 이상 양의 정수)
			행동
				public Time()
					기본 생성자
					시(0), 분(0), 초(0)
				public Time(int hour, int minute, int second)
					생성자 오버로딩
					hour : 시
					minute : 분
					second : 초
				public Time(int minute, int second)
					생성자 오버로딩
					minute : 분
					second : 초
				public Time(int second)
					생성자 오버로딩
					second : 초
					String info()
					02:30:45
		
		● 호출
		//시간 1
		Time t1 = new Time(); //기본 생성자 호출
		System.out.println(t1.info());
		
		//시간 2
		Time t2 = new Time(2, 30, 45); //오버로딩 생성자 호출
		System.out.println(t2.info());
		
		//시간 3
		Time t3 = new Time(1, 70, 30); //오버로딩 생성자 호출
		System.out.println(t3.info());
		
		//시간 4
		Time t4 = new Time(30, 10); //오버로딩 생성자 호출
		System.out.println(t4.info());
		
		//시간 5
		Time t5 = new Time(90, 10); //오버로딩 생성자 호출
		System.out.println(t5.info());
		
		//시간 6
		Time t6 = new Time(50); //오버로딩 생성자 호출
		System.out.println(t6.info());
		
		//시간 7
		Time t7 = new Time(10000); //오버로딩 생성자 호출
		System.out.println(t7.info());
		
		● 출력
		00:00:00 //t1.info();
		02:30:45 //t2.info();
		02:10:30 //t3.info();
		00:30:10 //t4.info();
		01:30:10 //t5.info();
		00:00:50 //t6.info();
		02:46:40 //t7.info();
		*/
		
		//시간 1
		Time t1 = new Time(); //기본 생성자 호출
		System.out.println(t1.info());

		//시간 2
		Time t2 = new Time(2, 30, 45); //오버로딩 생성자 호출
		System.out.println(t2.info());

		//시간 3
		Time t3 = new Time(1, 70, 30); //오버로딩 생성자 호출
		System.out.println(t3.info());

		//시간 4
		Time t4 = new Time(30, 10); //오버로딩 생성자 호출
		System.out.println(t4.info());

		//시간 5
		Time t5 = new Time(90, 10); //오버로딩 생성자 호출
		System.out.println(t5.info());

		//시간 6
		Time t6 = new Time(50); //오버로딩 생성자 호출
		System.out.println(t6.info());

		//시간 7
		Time t7 = new Time(10000); //오버로딩 생성자 호출
		System.out.println(t7.info());
	}
}

 

📌Time Class

package com.test.question.q99;

public class Time {

    private int hour;      // 시
    private int minute;    // 분
    private int second;    // 초

    // 기본 생성자
    public Time() {
        this(0, 0, 0);
    }

    // 시, 분, 초를 받는 생성자
    public Time(int hour, int minute, int second) {
        this.second = second % 60;  // 초를 분과 초로 변환하여 저장
        this.hour = (second / 60 + minute) / 60; // 시간 계산
        this.minute = (second / 60 + minute) % 60; // 분 계산
        this.hour += hour;  // 시간 계산 결과 더하기
    }

    // 분, 초를 받는 생성자
    public Time(int minute, int second) {
        this(0, minute, second);
    }

    // 초를 받는 생성자
    public Time(int second) {
        this(0, 0, second);
    }

    // 시간 정보를 문자열로 반환하는 메서드
    String info() {
        /*
        if (this.second >= 60) {
            this.minute += this.second / 60;
            this.second -= (this.second / 60) * 60;
        }

        if (this.minute >= 60) {
            this.hour += this.minute / 60;
            this.minute -= (this.minute / 60) * 60;
        }
        */

        return String.format("%02d:%02d:%02d", this.hour, this.minute, this.second);
    }
}