[Kotlin][6]코틀린 타이머 만드는 방법[강좌]

반응형

    메인이미지
    메인이미지

    안녕하세요.

    오늘은 저번 포스팅까지 배운 내용을 바탕으로 사용자의 입력만큼 초시계를 돌리는 타이머를 만들어 볼 겁니다.

    그럼 바로 한번 시작해 보도록 하죠.

    타이머 만드는 방법

    일단 설명하기에 앞서 제가 만든 타이머 코드를 보여드리겠습니다.

    그 후 한줄 한줄 설명해드리도록 할 거에요.

    import kotlin.concurrent.timer
    fun main()
    {
        var inputtedData : String?
        var minute = 0
        var second = 0
        do {
            print("시간을 입력해주세요.(분) : ")
            inputtedData = readLine()
        }while (inputtedData!!.isEmpty()||inputtedData.toInt()<0||inputtedData.toInt()>=60)
    
        minute = inputtedData.toInt()
        timer(period = 1000) {
            print(String.format("\n%02d : %02d",minute,second))
            if (second==0&&minute==0) {
                println("\n타이머 종료")
                cancel()
            }
            if (second == 0) {
                minute--;
                second = 60;
            }
            second--
        }
        return
    }

    위 코드가 타이머 타이머 프로그램의 코드이고 사용자에게 1부터 60까지의 숫자를 입력 받아 1초씩 감소시키며 작동합니다.

    import kotlin.concurrent.timer
    fun main()

    timer함수를 사용하기 위해 코틀린의 타이머 라이브러리를 추가시킨 뒤 메인 함수를 선언해 줬습니다.

        var inputtedData : String?
        var minute = 0
        var second = 0

    그런 뒤 사용자의 입력을 저장할 변수 [inputtedData]를 생성하고 String? 자료형으로 지정해줬어요.

    ‘?’를 붙인 이유는 [inputtedData]라는 변수에 null값이 들어갈 수 있게 하기 위함 입니다.

    그후 [minute], [second] 변수를 생성하고 0값으로 초기화한후 int형으로 지정해주죠.

    (코틀린에서는 자료형 선언을 하지 않아도 저장되는 데이터에 따라 컴파일러가 자료형을 지정해줍니다.)

        do {
            print("시간을 입력해주세요.(분) : ")
            inputtedData = readLine()
        }while (inputtedData!!.isEmpty()||inputtedData.toInt()<0||inputtedData.toInt()>=60)
    
        minute = inputtedData.toInt()

    이후 반복문 do/while()을 사용하여 코드 블럭을 만들어주고 그 안에 readline()을 이용해 [inputtedData]변수에 입력 받은 값을 넘겨줍니다.

    받은 데이터가 비어 있을 경우 오류가 날 수 있기 때문에 [inputtedData]의 문자열이 비었는지 확인하는 isEmpty()이용하여 조건을 걸어줘야겠죠?

    (isEmpty()는 문자열이 비었으면 참, 아니면 거짓을 반환함니다)

    (자매품으로 isNotEmpty()가 있습니다.)

    그리고 입력된 숫자가 음수이거나 60보다 크면 안되므로 조건을 추가해줍니다.

    위의 과정을 거친 데이터를 [minute]변수에 넣어줘요.

    timer(period = 1000) {
            print(String.format("\n%02d : %02d",minute,second))
            if (second==0&&minute==0) {
                println("\n타이머 종료")
                cancel()
            }
            if (second == 0) {
                minute--;
                second = 60;
            }
            second--
        }

    그런 뒤 타이머 함수를 불러오고 주기(period)1000으로 설정해줍니다.

    타이머 함수의 코드 블럭 안에 print()를 이용해서 시간과 초를 표시해줍니다.

    이때 String.format()를 이용해서 입력해주면 c언어에서 printf를 사용하는 것과 똑같이 사용하실 수 있습니다.

    분이나 초가 한자리 숫자가 되도 00 : 00 꼴로 출력 시키기 위해 %02d를 이용해 줬어요.

     

    이후 if()문을 이용해 분과 초가 모두 0이되면 타이머가 종료하도록 초만 0이되면 분의 단위를 1 낮추고 [second]변수의 값을 60으로 초기화 하게끔 했습니다.

    그리고 타이머가 반복될 때마다 위의 과정을 거친 후 초를 1단위씩 낮추도록 했죠.

     

    이렇게 마무리 지으면 타이머가 완성됩니다.

    아래는 위 코드의 실행 사진입니다.

    코드 실행 사진
    타이머 종료 사진


    이렇게 오늘은 코틀린 코딩을 이용해서 타이머를 만들어 봤습니다.

    다음 포스팅은 아마 제 블로그의 안드로이드 코딩으로 넘어가서 타이머 어플을 만드는 것에 대한 내용일 것 같아요.

    그럼 저는 다음에 더 나은 내용으로 찾아 뵙겠습니다.

    긴 글 읽어주셔서 감사해요.


    이번 강의에 사용된 내용

     

    [Kotlin][3]코틀린 자료형 선언 방법 및 nullable 변수 만드는 방법

    안녕하세요. 지난번 코틀린 프로젝트 생성에 이어서 오늘은 자료형을 선언하고 nullable 변수를 만드는 방법에 대해 알아볼까 합니다. 그럼 바로 시작하도록 하죠. 코틀린 변수 선언 방법 먼저 코틀린에서 일반적..

    postiveemblem.tistory.com

    이번 강의에 사용된 내용

     

    [Kotlin][4]코틀린 timer 함수 기본 사용법과 println, print의 차이에 대하여

    안녕하세요. 오랜만에 코틀린 강좌로 다시 찾아왔습니다. 한동안 프로그래밍 관련 강좌를 하지 않았었는데 그 이유는 어떤 것을 먼저 설명해드리면 좋을 지 몰라서 그랬어요. 그런데 안드로이드 강좌를 진행하다..

    postiveemblem.tistory.com

     

    이번 강의에 사용된 내용

     

    [Kotlin][5]코틀린 readline()과 자료형 변환 방법

    안녕하세요. 오늘은 저번 타이머 함수 사용법에 이어서 readline()을 이용해 사용자에게 입력받는 법을 알아보려고 합니다. 또 입력 받은 모든 값을 스트링 값으로 반환하는 readline()을 어떻게 하면 숫자를 입..

    postiveemblem.tistory.com


    이 글의 저작권은 전적으로 작성자인 P_Emblem에게 있으며
    허락없는 사용을 금합니다.

    댓글

    Designed by JB FACTORY