본문 바로가기

국비교육/국비교육 복습

Day05_loop_Test04 : 타이머 만들기 (★) + Thread.sleep 메소드

(Q) 타이머 만들기
사용자가 분과 초를 설정하면 해당하는 시간만큼의 메세지 출력 후 종료되는 프로그램 구현
- 분 입력 : 2
- 초 입력 : 10

 

ex) 
2분 10초 남았습니다
2분 9초 남았습니다
...
0분 2초 남았습니다
0분 1초 남았습니다
...

package day05;

import java.util.Scanner;

public class Day05_loop_Test04 {

	public static void main(String[] args) throws InterruptedException {
		
		Scanner sc = new Scanner(System.in);
		
		//준비 - 분, 초 세팅
		int min = sc.nextInt();
		int sec = sc.nextInt();
		int totalSec = min * 60 + sec;
		
		//출력
		for(int i = totalSec ; i >= 0 ; i --) {
			System.out.println((i / 60) + "분 " + (i % 60) + "초 남았습니다");
			Thread.sleep(1000L);
		}
		
		sc.close();
	}
}

 

- 반복수 i를 totalSec부터 0 이상이 될 때까지 1씩 감소(i--) 시키면서 출력식에 대입

- (i / 60) : 분 - (totalSec를 60으로 나눈 몫) 

- (i % 60) : 초 (totalSec를 60으로 나눈 나머지)

 

** Thread.sleep 메소드

- 저장된 시간동안 현재 스레드를 중단시킨다

- () 안의 값은 msec(10^-3 [sec]) 단위이다

   ex) 1000L = 1[sec]

- main 메소드 옆에 throws InterruptedException 이라는 예외 처리(?)가 붙는다